1. 首页 > Linux教程 > 正文

Linux教程FG456-Kubernetes性能调优

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档介绍Kubernetes集群的性能调优方法。

Part01-性能概述

1.1 调优方向

# Kubernetes性能调优
[root@k8s-master ~]# cat > /root/k8s-performance.txt << 'EOF' Kubernetes性能调优 ================== 1. 控制平面调优 - API Server性能 - etcd性能 - Controller Manager - Scheduler 2. 数据平面调优 - kubelet配置 - 容器运行时 - 网络性能 - 存储性能 3. 应用调优 - 资源配置 - 镜像优化 - 启动速度 - 运行效率 4. 监控指标 - CPU使用率 - 内存使用率 - 网络延迟 - I/O性能 EOF

Part02-etcd调优

2.1 etcd性能优化

# 查看etcd状态
[root@k8s-master ~]# ETCDCTL_API=3 etcdctl endpoint status –cluster –write-out=table
+————————+——————+———+———+———–+————+———–+————+——————–+——–+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+————————+——————+———+———+———–+————+———–+————+——————–+——–+
| https://更多学习教程公众号风哥教程itpux_com192.168.1.100:2379 | abc123def456 | 3.5.9 | 100 MB | true | false | 2 | 1234567 | 1234567 | |
+————————+——————+———+———+———–+————+———–+————+——————–+——–+

# 查看etcd性能
[root@k8s-master ~]# ETCDCTL_API=3 etcdctl check perf
60 / 60 Booleans 100.00%
60 / 60 Bytes 100.00%
60 / 60 Integers 100.00%
60 / 60 Strings 100.00%
60 / 60 String-Integers 100.00%
60 / 60 String-Strings 100.00%

PASS: Throughput is 15000 requests/sec
PASS: Slowest request took 10ms
PASS: Stddev is 5ms
PASS

# 优化etcd配置
[root@k8s-master ~]# cat > /etc/kubernetes/manifests/etcd.yaml << 'EOF' apiVersion: v1 kind: Pod metadata: name: etcd namespace: kube-system spec: containers: - command: - etcd - --advertise-client-urls=https://192.168.1.100:2379 - --initial-advertise-peer-urls=https://192.168.from PG视频:www.itpux.com1.100:2380 - --initial-cluster=k8s-master=https://192.168.1.100:2380 - --data-dir=/var/lib/etcd - --snapshot-count=10000 - --heartbeat-interval=100 - --election-timeout=1000 - --quota-backend-bytes=8589934592 - --max-request-bytes=15728640 - --auto-compaction-retention=1 - --auto-compaction-mode=periodic env: - name: ETCD_UNSUPPORTED_ARCH value: "" image: registry.k8s.io/etcd:3.5.9-0 resources: requests: cpu: 200m memory: 512Mi limits: cpu: 1000m memory: 2Gi EOF # 定期压缩etcd [root@k8s-master ~]# ETCDCTL_API=3 etcdctl compact $(ETCDCTL_API=3 etcdctl endpoint status --write-out="json" | jq -r '.[] | .Status.header.revision') compacted revision 1234567 # 碎片整理 [root@k8s-master ~]# ETCDCTL_API=3 etcdctl defrag Finished defragmenting etcd member[abc123def456]

Part03-kubelet调优

3.1 kubelet配置优化

# 查看当前kubelet配置
[root@k8s-master ~]# systemctl status kubelet
● kubelet.service – Kubernetes Kubelet Server
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; preset: disabled)
Drop-In: /etc/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Sat 2026-04-04 00:00:00 CST; 1 day ago

# 优化kubelet配置
[root@k8s-master ~]# cat > /etc/kubernetes/kubelet-config.yaml << 'EOF' apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration maxPods: 250 podPidsLimit: 4096 imageGCHighThresholdPercent: 85 imageGCLowThresholdPercent: 80 evictionHard: memory.available: "500Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" evictionSoft: memory.available: "1Gi" nodefs.available: "15%" evictionSoftGracePeriod: memory.更多视频教程www.fgedu.net.cnavailable: "1m30s" nodefs.available: "2m" evictionMaxPodGracePeriod: 60 evictionMinimumReclaim: memory.available: "0Mi" nodefs.available: "500Mi" imagefs.available: "2Gi" kubeAPIQPS: 50 kubeAPIBurst: 100 serializeImagePulls: false registryPullQPS: 10 registryBurst: 20 EOF # 重启kubelet [root@k8s-master ~]# systemctl daemon-reload [root@k8s-master ~]# systemctl restart kubelet # 查看kubelet指标 [root@k8s-master ~]# curl -s http://localhost:10255/metrics | grep kubelet_ kubelet_running_container_count 100 kubelet_running_pod_count 50 kubelet_runtime_operations_total{operation_type="container_status"} 12345 kubelet_runtime_operations_total{operation_type="create_container"} 100 kubelet_runtime_operations_total{operation_type="list_containers"} 5678

Part04-应用性能调优

4.1 资源配置优化

# 优化Pod资源配置
[root@k8s-master ~]# cat > fgedu-optimized-deployment.yaml << 'EOF' apiVersion: apps/v1 kind: Deployment metadata: name: fgedu-app-optimized namespace: fgedu-prod spec: replicas: 3 selector: matchLabels: app: fgedu-app-optimized template: metadata: labels: app: fgedu-app-optimized spec: containers: - name: app image: nginx:1.25 ports: - containerPort: 80 resources: requests: cpu: 200m memory: 256Mi limits: cpu: 1000m memory: 1Gi env: - name: GOMAXPROCS valueFrom: resourceFieldRef: resource: limits.cpu - name: GOMEMLIMIT valueFrom: resourceFieldRef: resource: limits.memory livenessProbe: httpGet: path: /health port: 80 initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /ready port: 80 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 3 lifecycle: preStop: exec: command: ["/bin/sh", "-c", "sleep 10"] terminationGracePeriodSeconds: 30 affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - fgedu-app-optimized topologyKey: kubernetes.io/hostname EOF [root@k8s-master ~]# kubectl apply -f fgedu-optimized-deployment.yaml deployment.apps/fgedu-app-optimized created # 查看Pod性能 [root@k8s-master ~]# kubectl top pods -n fgedu-prod NAME CPU(cores) MEMORY(bytes) fgedu-app-optimized-abc12-xyz789 50m 128Mi fgedu-app-optimized-abc12-abc12 45m 125Mi fgedu-app-optimized-abc12-def34 48m 130Mi # 查看节点性能 [root@k8s-master ~]# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% k8s-master 200m 5% 1024Mi 12% k8s-node1 150m 3% 512Mi 6% k8s-node2 150m 3% 512Mi 6% # 性能基准测试 [root@k8s-master ~]# cat > fgedu-benchmark.yaml << 'EOF' apiVersion: batch/v1 kind: Job metadata: name: fgedu-benchmark namespace: fgedu-prod spec: template: spec: containers: - name: benchmark image: busybox command: - /bin/sh - -c - | echo "Starting benchmark..." time wget -q -O /dev/null http://fgedu-app-optimized:80/ echo "Benchmark completed." restartPolicy: Never backoffLimit: 0 EOF [root@k8s-master ~]# kubectl apply -f fgedu-benchmark.yaml job.batch/fgedu-benchmark created [root@k8s-master ~]# kubectl logs job/fgedu-benchmark -n fgedu-prod Starting benchmark... Benchmark completed. real 0m 0.05s user 0m 0.00s sys 0m 0.00s
风哥针对性能调优建议:

  • 定期维护etcd数据库
  • 优化kubelet配置参数
  • 合理配置资源请求和限制
  • 使用健康检查保证可用性
  • 监控性能指标持续优化

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息