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-dashboard
1.2 证书创建与安全配置
自签名证书能解决浏览器警告问题,同时提高安全性:
mkdir -p dashboard-certs && cd dashboard-certs
# 生成私钥
openssl genrsa -out dashboard.key 2048
# 创建证书签名请求
openssl req -new -key dashboard.key -out dashboard.csr -subj '/CN=dashboard-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-file=dashboard.key --from-file=dashboard.crt \
-n kubernetes-dashboard
1.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配置启用IPVS:
kubectl 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 -Ln
2.3 IPVS调优参数
在ConfigMap中可添加以下优化参数:
ipvs:
excludeCIDRs: null
minSyncPeriod: 0s
scheduler: "wrr"
syncPeriod: 30s
tcpFinTimeout: 0s
tcpTimeout: 0s
udpTimeout: 0s
关键参数说明:
- scheduler:指定负载均衡算法,默认为wrr
- syncPeriod:IPVS规则同步间隔
- tcpTimeout:TCP连接超时时间(秒)
3. 监控与问题排查
优化后的集群需要完善的监控来验证效果。
3.1 部署Metrics Server
Metrics Server是集群资源监控的核心组件:
git clone https://github.com/kubernetes-incubator/metrics-server.git
cd metrics-server/deploy/1.8+/
修改deployment配置添加关键参数:
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
部署并验证:
kubectl apply -f .
# 等待1-2分钟后查看节点资源使用
kubectl top nodes
3.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-server
4. 安全加固与日常维护
4.1 Dashboard安全最佳实践
- 启用HTTPS:始终使用HTTPS访问
- 限制访问IP:通过NetworkPolicy或外部负载均衡器限制访问源IP
- 定期轮换令牌:设置令牌有效期并定期更换
- 审计日志:开启Dashboard的访问日志审计
示例NetworkPolicy:
apiVersion: 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_max=1048576" >> /etc/sysctl.conf
sysctl -p
# 查看当前连接数
cat /proc/sys/net/netfilter/nf_conntrack_count
- 故障转移测试:模拟节点故障验证IPVS的快速故障转移能力
在集群规模扩大时,考虑以下进阶优化:
- 根据业务特点选择最适合的调度算法
- 调整
syncPeriod平衡实时性和性能 - 对特定Service使用
externalTrafficPolicy: Local保留客户端IP
更多推荐
所有评论(0)