Kubernetes 1.18.6集群部署后,如何配置Dashboard并开启IPVS模式提升网络性能?

张开发
2026/4/21 8:43:18 15 分钟阅读

分享文章

Kubernetes 1.18.6集群部署后,如何配置Dashboard并开启IPVS模式提升网络性能?
Kubernetes 1.18.6集群部署后深度优化Dashboard配置与IPVS网络调优实战当Kubernetes集群完成基础部署后真正的挑战才刚刚开始。本文将带您深入两个关键优化场景Web管理界面Dashboard的精细化配置以及网络性能提升利器IPVS模式的实战启用。这些进阶操作不仅能提升集群管理效率还能显著改善网络性能表现。1. Kubernetes Dashboard从安装到安全加固Dashboard作为Kubernetes官方提供的Web UI是集群管理的可视化门户。但默认安装往往存在访问限制和安全隐患我们需要进行深度定制。1.1 定制化安装Dashboard首先获取官方推荐的部署清单并进行关键修改wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml -O dashboard.yaml需要修改的关键配置点Service类型变更将ClusterIP改为NodePort便于外部访问自定义端口指定固定的NodePort端口如30008证书配置注释掉自动生成的证书配置准备使用自签名证书修改后的Service部分示例kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30008 selector: k8s-app: kubernetes-dashboard1.2 证书创建与安全配置自签名证书能解决浏览器警告问题同时提高安全性mkdir -p dashboard-certs cd dashboard-certs # 生成私钥 openssl genrsa -out dashboard.key 2048 # 创建证书签名请求 openssl req -new -key dashboard.key -out dashboard.csr -subj /CNdashboard-cert # 生成自签名证书有效期10年 openssl x509 -req -days 3650 -in dashboard.csr -signkey dashboard.key -out dashboard.crt # 创建Kubernetes Secret kubectl create secret generic kubernetes-dashboard-certs \ --from-filedashboard.key --from-filedashboard.crt \ -n kubernetes-dashboard1.3 权限控制最佳实践为Dashboard创建专用管理员账号比直接使用集群admin更安全# dashboard-admin.yaml apiVersion: v1 kind: ServiceAccount metadata: name: dashboard-admin namespace: kubernetes-dashboard然后绑定集群管理员角色# dashboard-admin-bind-cluster-role.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dashboard-admin-bind-cluster-role roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kubernetes-dashboard应用配置后获取访问令牌kubectl apply -f dashboard-admin.yaml kubectl apply -f dashboard-admin-bind-cluster-role.yaml # 获取访问令牌 kubectl -n kubernetes-dashboard describe secret \ $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk {print $1})2. IPVS模式提升Kubernetes网络性能Kubernetes默认使用iptables实现Service的负载均衡但在大规模集群中性能会成为瓶颈。IPVS作为Linux内核级的负载均衡方案能显著提升性能。2.1 IPVS核心优势解析特性iptables模式IPVS模式负载均衡算法仅支持随机均衡支持多种高级算法规则存储线性链表哈希表性能表现O(n)复杂度O(1)复杂度连接跟踪每个Pod独立跟踪全局连接跟踪适用规模小规模集群大规模生产环境IPVS支持丰富的调度算法rr轮询调度wrr加权轮询调度lc最小连接调度wlc加权最小连接调度lblc基于局部性的最小连接调度2.2 启用IPVS模式实战首先确保所有节点已加载IPVS内核模块cat /etc/sysconfig/modules/ipvs.modules EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules bash /etc/sysconfig/modules/ipvs.modules验证模块加载lsmod | grep ip_vs修改kube-proxy配置启用IPVSkubectl edit configmap kube-proxy -n kube-system找到mode字段并修改为mode: ipvs重启kube-proxy Pod使配置生效kubectl get pod -n kube-system | grep kube-proxy | awk {system(kubectl delete pod $1 -n kube-system)}验证IPVS规则ipvsadm -Ln2.3 IPVS调优参数在ConfigMap中可添加以下优化参数ipvs: excludeCIDRs: null minSyncPeriod: 0s scheduler: wrr syncPeriod: 30s tcpFinTimeout: 0s tcpTimeout: 0s udpTimeout: 0s关键参数说明scheduler指定负载均衡算法默认为wrrsyncPeriodIPVS规则同步间隔tcpTimeoutTCP连接超时时间秒3. 监控与问题排查优化后的集群需要完善的监控来验证效果。3.1 部署Metrics ServerMetrics Server是集群资源监控的核心组件git clone https://github.com/kubernetes-incubator/metrics-server.git cd metrics-server/deploy/1.8/修改deployment配置添加关键参数args: - --cert-dir/tmp - --secure-port4443 - --kubelet-insecure-tls - --kubelet-preferred-address-typesInternalIP,ExternalIP,Hostname部署并验证kubectl apply -f . # 等待1-2分钟后查看节点资源使用 kubectl top nodes3.2 Dashboard集成监控安装完成后Dashboard将自动显示资源使用情况。如果未显示检查Metrics Server是否正常运行Dashboard是否正确配置了metrics-scraper服务常见问题排查命令# 检查Metrics Server日志 kubectl logs -n kube-system $(kubectl get pods -n kube-system | grep metrics-server | awk {print $1}) # 验证API可用性 kubectl get --raw /apis/metrics.k8s.io/v1beta1/nodes # 检查服务端点 kubectl get endpoints -n kube-system metrics-server4. 安全加固与日常维护4.1 Dashboard安全最佳实践启用HTTPS始终使用HTTPS访问限制访问IP通过NetworkPolicy或外部负载均衡器限制访问源IP定期轮换令牌设置令牌有效期并定期更换审计日志开启Dashboard的访问日志审计示例NetworkPolicyapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: dashboard-allow-only-office namespace: kubernetes-dashboard spec: podSelector: matchLabels: k8s-app: kubernetes-dashboard policyTypes: - Ingress ingress: - from: - ipBlock: cidr: 192.168.1.0/24 # 只允许办公室IP段访问4.2 IPVS模式维护要点监控连接数定期检查ipvsadm -Ln输出性能基准测试比较模式切换前后的延迟和吞吐量内核参数调优# 增加连接跟踪表大小 echo net.netfilter.nf_conntrack_max1048576 /etc/sysctl.conf sysctl -p # 查看当前连接数 cat /proc/sys/net/netfilter/nf_conntrack_count故障转移测试模拟节点故障验证IPVS的快速故障转移能力在集群规模扩大时考虑以下进阶优化根据业务特点选择最适合的调度算法调整syncPeriod平衡实时性和性能对特定Service使用externalTrafficPolicy: Local保留客户端IP

更多文章