生产集群升级kube-proxy组件计划
目的:1.13.7 --> 1.16.8
0.更新前再次确认工作(删除" resource-container= "字段)
kubectl get daemonset kube-proxy --namespace kube-system -o yaml | grep 'resource-container='
如何有输出,edit删除
kubectl edit daemonset kube-proxy --namespace kube-system
1.备份当前kube-proxy文件输出yaml文件备用(包含configmap等资源类型)注:备份后的yaml不能直接使用,需要删除相关集群绑定信息后,调整格式才能应用
kubectl -n kube-system get configmaps kube-proxy -o yaml >> old-kube-proxy-1.13.7-2021xxxx.yaml kubectl -n kube-system get configmaps kube-proxy-config -o yaml >> old-kube-proxy-1.13.7-2021xxxx.yaml kubectl -n kube-system get sa kube-proxy -o yaml >> old-kube-proxy-1.13.7-2021xxxx.yaml kubectl -n kube-system get clusterrolebindings.rbac.authorization.k8s.io eks:kube-proxy -o yaml >> old-kube-proxy-1.13.7-2021xxxx.yaml kubectl -n kube-system get daemonsets.apps kube-proxy -o yaml >> old-kube-proxy-1.13.7-2021xxxx.yaml
2.修改kube-proxy模板文件(终端节点,镜像版本,提前验证镜像能否拉取)
查看终端服务节点
aws eks describe-cluster \ --name <cluster-name> \ --region <region-code> \ --query 'cluster.endpoint' \ --output text
返回
https://<A89DBB2140C8AC0C2F920A36CCC6E18C>.sk1.<region-code>.eks.amazonaws.com
修改模板文件
3.部署新版kube-proxy配置文件,并且快速处理对应的pod为running状态 (ssh登录子节点验证iptables规则状态,设置副本数后查看)
kubectl apply -f kube-proxy-temp-1.16.8.yaml
验证方式:
kube-proxy pod running 后
ssh ec2-user@work01 iptables -L <KUBE-SVC-XXXX> -t nat
master节点操作:
kubectl -n <grafana> scale deployments.apps <grafana-dep> --replicas=5
work节点操作
iptables -L <KUBE-SVC-XXXX> -t nat
同步更新则为正常
恢复操作:
kubectl -n <grafana> scale deployments.apps <grafana-dep> --replicas=1
3.1.<<升级失败回滚计划>>,若升级失败,20分钟内kube-proxy-pod或者集群服务还是error状态,则删除对应的资源对象,部署旧的kube-proxy.yaml备份文件,回滚。
方式1(优先):
kubectl -n kube-system rollout undo daemonsets.apps kube-proxy 成功后ssh工作节点验证iptables规则
方式2:
old-kube-proxy-1.13.8.yaml(修改格式能直接应用的yaml文件)
kubectl apply -f old-kube-proxy-1.13.8.yaml
pod runing后再次执行验证操作
验证方式:
kube-proxy pod running 后
ssh ec2-user@work01 iptables -L <KUBE-SVC-XXXX> -t nat
master节点操作:
kubectl -n <grafana> scale deployments.apps <grafana-dep> --replicas=5
work节点操作
iptables -L <KUBE-SVC-XXXX> -t nat
同步更新则为正常
恢复操作:
kubectl -n <grafana> scale deployments.apps <grafana-dep> --replicas=1