1 K8S版本拉齐
1.1 概述
本文档适用于移动云K8S版本从v1.16.0、v1.18.5版本升级至v1.21.5,k8s集群配套组件calico、coredns、etcd、容器运行时、监控等,也将拉齐至EKI V1.0发布的版本。
1.2 k8s
1.2.1 版本
组件名称 现有版本 目标版本
K8S v1.16.0 v1.21.5
K8S v1.18.5 v1.21.5
1.3 calico
1.3.1 版本
组件名称 现有版本 目标版本
calico v3.8.4 v3.20.2
1.3.2 拉齐步骤
1.备份
$ cp -r /apps/conf/calico/conf /apps/conf/calico/conf-back
$ sudo /apps/bin/kubectl -n kube-system get cm calico-config -oyaml > calico-config.yaml
$ sudo /apps/bin/kubectl -n kube-system get deploy calico-kube-controllers -oyaml > calico-kube-controllers.yaml
$ sudo /apps/bin/kubectl -n kube-system get ds calico-node -oyaml > calico-node.yaml

若K8S集群节点内存在/apps/bin/calicoctl文件,则将其备份:
$ cp /apps/bin/calicoctl /apps/bin/calicoctl-3.8.4

2.准备工作
确认镜像上传
镜像:calico-cni:v3.20.2、calico-pod2daemon-flexvol:v3.20.2、calico-node:v3.20.2、calico-typha:v3.20.2、calico-kube-controllers:v3.20.2
确认以上镜像均已上传至该K8S环境使用的镜像仓库(根据实际镜像仓库地址添加仓库名/项目名)。
确认部署文件上传
确认部署文件calico-etcd-v4.yaml、calico-etcd-v6.yaml、calicoctl.cfg文件均已上传至某master节点。
确认calicoctl二进制文件上传
将calicoctl二进制文件上传至K8S集群内所有节点的/apps/bin目录,替换原有calicoctl文件。

3.部署calico
根据K8S为单栈环境,还是双栈环境,修改对应的yaml文件。
若为K8S单栈,修改calico-etcd-v4.yaml
① CALICO_IPV4POOL_CIDR:修改为原环境的值;
② IP_AUTODETECTION_METHOD,则将该值修改为原环境的值;
③ calico-etcd-secrets中etcd-ca、etcd-cert、etcd-key的值修改为环境中的值,cat 文件名| base64 -w 0
④ etcd_endpoints:修改为环境中etcd对外暴露的地址,以逗号分隔;
若为K8S双栈,修改calico-etcd-v6.yaml
① CALICO_IPV4POOL_CIDR:修改为原环境的值;
② CALICO_IPV6POOL_CIDR:修改为需要的值;
③ IP_AUTODETECTION_METHOD,则将该值修改为原环境的值;
④ IP6_AUTODETECTION_METHOD,修为与IP_AUTODETECTION_METHOD同一网卡IPv6的地址;
⑤ calico-etcd-secrets中etcd-ca、etcd-cert、etcd-key的值修改为环境中的值,cat 文件名| base64 -w 0
⑥ etcd_endpoints:修改为环境中etcd对外暴露的地址,以逗号分隔;

根据yaml文件执行部署:

若为单栈

$ sudo /apps/bin/kubectl apply -f calico-etcd-v4.yaml

若为双栈

$ sudo /apps/bin/kubectl apply -f calico-etcd-v6.yaml

4.部署calicoctl
修改文件calicoctl.cfg文件,根据实际环境的信息,修改参数etcdEndpoints。
将calicoctl.cfg文件存入目录 /etc/calico。
1.3.3 验证
检查calico pod状态:
$ sudo /apps/bin/kubectl -n kube-system get po | grep calico

检查calico node状态:
$ calicoctl node status
1.3.4 回滚
删除新部署calico:

若为单栈

$ sudo /apps/bin/kubectl delete -f calico-etcd-v4.yaml

若为双栈

$ sudo /apps/bin/kubectl delete -f calico-etcd-v6.yaml

部署原有calico
$ sudo /apps/bin/kubectl apply -f /apps/conf/calico/conf/*

恢复calicoctl
$ cp /apps/bin/calicoctl-3.8.4 /apps/bin/calicoctl
1.3.5 业务影响
calico版本升级期间不会对已有业务产生影响。
1.4 coredns
1.4.1 版本
组件名称 现有版本 目标版本
croedns 1.6.5 1.8.0
coredns 1.6.7 1.8.0
1.4.2 拉齐步骤
1.备份
$ sudo /apps/bin/kubectl -n kube-system get deploy coredns -oyaml > coredns.yaml

2.准备工作
确认镜像上传
镜像:coredns:1.8.0
确认以上镜像均已上传至该K8S环境使用的镜像仓库(根据实际镜像仓库地址添加仓库名/项目名)。
3.部署
修改coredns deployment的镜像tag

将镜像tag修改为1.8.0

$ sudo /apps/bin/kubectl -n kube-system edit deploy coredns
1.4.3 验证
检查coredns pod的状态
$ sudo /apps/bin/kubectl -n kube-system get po| grep coredns

检查coredns是否正常工作

部署dnsutils的pod

$ sudo /apps/bin/kubectl apply -f dnsutils.yaml

进入dnsutils pod

$ sudo /apps/bin/kubectl exec -ti dnsutils bash

测试dns解析

$ nslookup kubernetes

退出dnsutils pod

$ exit

删除dnsutils pod

$ sudo /apps/bin/kubectl delete -f dnsutils.yaml
1.4.4 回滚
将coredns镜像的版本修改为原来的值:1.6.5或1.6.7
$ sudo /apps/bin/kubectl -n kube-system edit deploy coredns
1.4.5 业务影响
coredns版本升级,将会采取滚动更新的方式进行,不会对已有业务产生影响。

1.5 etcd
1.5.1 版本
组件名称 现有版本 目标版本
etcd 3.3.15 3.4.13
etcd 3.4.3 3.4.13
1.5.2 拉齐步骤
1.备份
备份etcd

查找etcd集群的leader,在master节点的/apps/conf/kubernetes/ssl/etcd目录执行

$ etcdctl --cacert ca.crt --cert server.crt --key server.key --endpoints=https://192.168.0.1:2379,https://192.168.0.2:2379,https://192.168.0.3:2379 endpoints status -w table

在leader节点上执行etcd集群的备份操作

$ etcdctl --cacert ca.crt --cert server.crt --key server.key --endpoints https://127.0.0.1:2379 snapshot save /apps/data/snapshot.db

在3台master节点执行etcd目录的备份

$ cp -r /apps/data/etcd/ /apps/data/etcd-bak

备份etcd证书

在3个master节点分别备份etcd证书

$ cp -r /apps/conf/kubernetes/ssl/etcd /apps/conf/kubernetes/ssl/etcd-bak

备份yaml文件

在3个master节点分别备份etcd、kube-apiserver的yaml文件

$ cp -r /apps/conf/kubernetes/manifests/etcd.yaml /apps/conf/kubernetes/etcd.yaml-bak
$ cp -r /apps/conf/kubernetes/manifests/kube-apiserver.yaml /apps/conf/kubernetes/kube-apiserver.yaml-bak

2.准备工作
确认镜像上传
镜像:etcd:3.4.13-0
确认以上镜像均已上传至该K8S环境使用的镜像仓库(根据实际镜像仓库地址添加仓库名/项目名)。
确认3.4.13版本的etcdctl命令上传
将etcdctl二进制文件上传到目录/apps/bin下。

3.部署
版本更新
依次在3台master节点上执行如下步骤(该版本更新步骤,针对K8S初始版本为1.18.5)

将静态pod文件移除出来

$ mv /apps/conf/kubernetes/manifests/etcd.yaml /apps/conf/kubernetes/

修改etcd.yaml文件,将镜像tag修改为3.4.13-0

$ vi /apps/conf/kubernetes/etcd.yaml

重建静态pod

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

依次在3台master节点上执行如下步骤(该版本更新步骤,针对K8S初始版本为1.16.0)

master1节点执行

停止原有的etcd

$ systemctl stop etcd
$ systemctl disable etcd

拷贝已有etcd的ca证书

$ cp /apps/conf/kubernetes/ssl/etcd/ca.pem /apps/conf/kubernetes/ssl/etcd/ca.crt
$ cp /apps/conf/kubernetes/ssl/etcd/ca-key.pem /apps/conf/kubernetes/ssl/etcd/ca.key

编辑kubeadm-config.yaml,新增master节点地址

$ vi /apps/conf/kubernetes/kubeadm-config.yaml

etcd.serverCertsSANs添加三个master节点的IPv4地址及127.0.0.1

etcd.peerCertSANs添加三个master节点的IPv4地址及127.0.0.1

生成etcd证书

$ kubeadm init phase certs etcd-healthcheck-client --config kubeadm-config.yaml
$ kubeadm init phase certs etcd-server --config kubeadm-config.yaml
$ kubeadm init phase certs etcd-peer --config kubeadm-config.yaml

生成etcd yaml文件

$ kubeadm init phase etcd local --config /apps/conf/kubeadm-config.yaml

检查etcd是否启动

$ docker ps | grep etcd

证书分发

将master1节点上etcd的6个证书,分别拷贝到master2、master3节点的/apps/conf/kubernets/ssl/etcd目录下,包括ca.crt、ca.key、healthcheck-client.crt、healthcheck-client.key、peer.crt、peer.key、server.crt、server.key

etcd2节点执行

拷贝master1节点的etcd yaml文件

修改etcd yaml文件

$ vi etcd.yaml

修改参数:

–advertise-client-urls=https://{etcd2节点地址}:2379
–initial-advertise-peer-urls=https://{etcd2节点地址}:2380
–initial-cluster={etcd1节点名称}=https://{etcd1节点地址}:2380,{etcd2节点名称}=https://{etcd2节点地址}:2380
–listen-client-urls=https://{etcd2节点地址}:2379
–listen-peer-urls=https://{etcd2节点地址}:2380
–name={etcd2节点名称}

新增参数

–initial-cluster-state=existing

停止已有etcd,并新建新的etcd

$ systemctl stop etcd
$ systemctl disable etcd
$ mv etcd.yaml /apps/conf/kubernetes/manifests/

etcd3节点执行

拷贝master1节点的etcd yaml文件

修改etcd yaml文件

$ vi etcd.yaml

修改参数:

–advertise-client-urls=https://{etcd3节点地址}:2379
–initial-advertise-peer-urls=https://{etcd3节点地址}:2380
–initial-cluster={etcd1节点名称}=https://{etcd1节点地址}:2380,{etcd2节点名称}=https://{etcd2节点地址}:2380,{etcd3节点名称}=https://{etcd3节点地址}:2380
–listen-client-urls=https://{etcd3节点地址}:2379
–listen-peer-urls=https://{etcd3节点地址}:2380
–name={etcd3节点名称}

新增参数

–initial-cluster-state=existing

停止已有etcd,并新建新的etcd

$ systemctl stop etcd
$ systemctl disable etcd
$ mv etcd.yaml /apps/conf/kubernetes/manifests/

IPv6切换
① 新建etcd证书

修改kubeadm-config-v6.yaml

$ vi /apps/conf/kubernetes/kubeadm-config-v6.yaml

etcd.serverCertsSANs添加三个master节点的IPv6地址及::1,IPv4地址及127.0.0.1

etcd.peerCertSANs添加三个master节点的IPv6地址及::1,IPv4地址及127.0.0.1

生成etcd新证书

$ cd /apps/conf/kubernetes/ssl/etcd
$ rm server.* peer.*
$ kubeadm init phase certs etcd-server --config kubeadm-config-v6.yaml
$ kubeadm init phase certs etcd-peer --config kubeadm-config-v6.yaml

将master1的etcd证书拷贝到master2、3

$ scp server.* peer.* master1、2:/apps/conf/kubernetes/ssl/etcd/

② 修改etcd1,在master1节点执行

将IPv4的地址全部修改为IPv6的地址, 健康检查地址修改为::1

$ vi /apps/conf/kubernetes/etcd.yaml

启动etcd1

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

修改etcd1的peer addr

获取etcd1的ID

$ etcdctl --cacert /apps/conf/kubernetes/ssl/etcd/ca.crt --cert /apps/conf/kubernetes/ssl/etcd/server.crt --key /apps/conf/kubernetes/ssl/etcd/server.key --endpoints=https://{master1节点IPv6地址} member list -w table
$ etcdctl --cacert /apps/conf/kubernetes/ssl/etcd/ca.crt --cert /apps/conf/kubernetes/ssl/etcd/server.crt --key /apps/conf/kubernetes/ssl/etcd/server.key --endpoints=https://{master1节点IPv6地址} member update {上一步获取的etcd1的ID} --peer-urls=https://{master1节点IPv6地址}:2380

③ 修改kube-apiserver,在master1节点执行

将kube-apiserver.yaml中–etcd-servers的值修改为https://[::1]:2379

$ vi /apps/conf/kubernetes/kube-apiserver.yaml

启动kube-apiserver

$ mv /apps/conf/kubernetes/kube-apiserver.yaml /apps/conf/kubernetes/manifests/

④ 确认etcd2、etcd3的节点

查看另外两个master节点上的etcd yaml文件,若文件中的–initial-cluster参数为两个地址,则为etcd2;若为三个地址,则为etcd3.

⑤ 修改etcd2,在etcd2所在节点执行

将IPv4的地址全部修改为IPv6的地址, 健康检查地址修改为::1,注意–initial-cluster中etcd1的地址修改为etcd1的IPv6地址。

$ vi /apps/conf/kubernetes/etcd.yaml

启动etcd2

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

修改etcd2的peer addr

获取etcd2的ID

$ etcdctl --cacert /apps/conf/kubernetes/ssl/etcd/ca.crt --cert /apps/conf/kubernetes/ssl/etcd/server.crt --key /apps/conf/kubernetes/ssl/etcd/server.key --endpoints=https://{etcd2节点IPv6地址} member list -w table
$ etcdctl --cacert /apps/conf/kubernetes/ssl/etcd/ca.crt --cert /apps/conf/kubernetes/ssl/etcd/server.crt --key /apps/conf/kubernetes/ssl/etcd/server.key --endpoints=https://{etcd2节点IPv6地址} member update {上一步获取的etcd2的ID} --peer-urls=https://{etcd2节点IPv6地址}:2380

⑥ 修改kube-apiserver,在etcd2所在节点执行

将kube-apiserver.yaml中–etcd-servers的值修改为https://[::1]:2379

$ vi /apps/conf/kubernetes/kube-apiserver.yaml

启动kube-apiserver

$ mv /apps/conf/kubernetes/kube-apiserver.yaml /apps/conf/kubernetes/manifests/

⑦ 修改etcd3,在etcd3所在节点执行

将IPv4的地址全部修改为IPv6的地址, 健康检查地址修改为::1,注意–initial-cluster中etcd1、etcd2的地址修改为etcd1、etcd2的IPv6地址。

$ vi /apps/conf/kubernetes/etcd.yaml

启动etcd3

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

修改etcd3的peer addr

获取etcd3的ID

$ etcdctl --cacert /apps/conf/kubernetes/ssl/etcd/ca.crt --cert /apps/conf/kubernetes/ssl/etcd/server.crt --key /apps/conf/kubernetes/ssl/etcd/server.key --endpoints=https://{etcd3节点IPv6地址} member list -w table
$ etcdctl --cacert /apps/conf/kubernetes/ssl/etcd/ca.crt --cert /apps/conf/kubernetes/ssl/etcd/server.crt --key /apps/conf/kubernetes/ssl/etcd/server.key --endpoints=https://{etcd3节点IPv6地址} member update {上一步获取的etcd3的ID} --peer-urls=https://{etcd3节点IPv6地址}:2380

⑧ 修改kube-apiserver,在etcd3所在节点执行

将kube-apiserver.yaml中–etcd-servers的值修改为https://[::1]:2379

$ vi /apps/conf/kubernetes/kube-apiserver.yaml

启动kube-apiserver

$ mv /apps/conf/kubernetes/kube-apiserver.yaml /apps/conf/kubernetes/manifests/

1.5.3 验证

在master节点的/apps/conf/kubernetes/ssl/etcd目录执行

$ etcdctl --cacert ca.crt --cert server.crt --key server.key --endpoints=https://[master1节点IPv6地址]:2379,https://[master2节点IPv6地址]:2379,https://[master3节点IPv6地址]:2379 endpoints status -w table

1.5.4 回滚
① 依次在3台master节点恢复etcd及kube-apiserver,按照etcd1、etcd2、etcd3的顺序执行。

恢复etcd

$ cp /apps/conf/kubernetes/etcd.yaml-bak /apps/conf/kubernetes/manifests/

恢复kube-apiserver

$ cp /apps/conf/kubernetes/kube-apiserver.yaml-bak /apps/conf/kubernetes/manifests/

1.5.5 异常情况处理
若出现etcd启动异常,暂无法解决的情况,可通过重建etcd集群实现。

① 删除etcd集群,依次在3台master节点执行

移除etcd静态pod

$ mv /apps/conf/kubernetes/manifests/etcd.yaml /apps/conf/kubernetes/

删除etcd目录

$ rm -rf /apps/data/etcd

② 恢复etcd数据
etcdctl
–name {节点hostname}
–endpoints=“https://[节点IPv6地址]:2379”
–initial-advertise-peer-urls=https://[节点IPv6地址]:2380
–cert=/apps/conf/kubernetes/ssl/etcd/server.crt
–key=/apps/conf/kubernetes/ssl/etcd/server.key
–cacert=/apps/conf/kubernetes/ssl/etcd/ca.crt
–initial-cluster “{节点hostname}=https://[节点IPv6地址]:2380”
–initial-advertise-peer-urls https://[节点IPv6地址]:2380
–data-dir=/apps/data/etcd
snapshot restore /apps/data/snapshot.db

③ 创建etcd1,在master1节点执行

启动etcd1

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

④ 创建etcd2

添加etcd2的member,在master1节点/apps/conf/kubernetes/ssl/etcd/目录执行

$ etcdctl --cacert ca.crt --cert server.crt --key server.key --endpoints=https://[master1节点IPv6地址]:2379 member add {etcd2节点hostname} --peer-urls=https://[etcd2节点IPv6地址]:2380

启动etcd2

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

⑤ 创建etcd3

添加etcd3的 member,在master1节点/apps/conf/kubernetes/ssl/etcd/目录执行

$ etcdctl --cacert ca.crt --cert server.crt --key server.key --endpoints=https://[master1节点IPv6地址]:2379 member add {etcd3节点hostname} --peer-urls=https://[etcd3节点IPv6地址]:2380

启动etcd3

$ mv /apps/conf/kubernetes/etcd.yaml /apps/conf/kubernetes/manifests/

1.5.6 业务影响
etcd组件版本更新时,将采取滚动更新的方式,会对master节点的kube-apiserver依次中断1分钟,若存在连接apiserver的业务,则存在3秒的业务中断,3秒内会将业务切换至其它正常工作的apiserver实例。
若存在连接etcd集群的业务,则需在etcd改造过程中,配合修改连接的etcd地址。

1.6 容器运行时
1.6.1 版本
组件名称 现有版本 目标版本
docker 18.09.5 containerd 1.5.7
1.6.2 拉齐步骤
1.准备工作
上传containerd安装包及config.toml文件
将cri-containerd-cni-1.5.7-linux-amd64.tar.gz、config.toml文件上传到节点上。
节点维护
① 驱逐需要更换容器运行时的节点上的pod,并将pod设置为不可调度:若存在不能驱逐的pod,且该pod使用了hostPort,需将该pod的副本数设置为0.
$ sudo /apps/bin/kubectl drain {节点名称}
② 关闭docker、containerd、kubelet
$ systemctl stop kubelet
$ docker stop $(docker ps -a| awk ‘{print $1}’ | tail -n +2)
$ docker rm $(docker container ls -a -q)
$ systemctl stop docker
$ systemctl stop containerd
③ 检查kube-apiserver、etcd、scheduler、controller-manager进程
若以上进程仍存在,需手动将其kill掉。
$ kill -9 $(pidof kube-apiserver)
$ kill -9 $(pidof etcd)
$ kill -9 $(pidof kube-scheduler)
$ kill -9 $(pidof kube-controller-manager)
④ 检查libseccomp版本
由于新的containerd需使用2.4以上版本的libseccomp,所以需先删除原有libseccomp,并安装新版libseccomp。
$ rpm -e libseccomp-devel-2.3.1-4.el7.x86_64 --nodeps
$ rpm -e libseccomp-2.3.1-3.el7.x86_64 --nodeps
$ rpm -ivh libseccomp-2.4.1-0.el7.x86_64.rpm
$ rpm -ivh libseccomp-devel-2.4.1-0.el7.x86_64.rpm

2.containerd部署
① 解压安装包
$ tar --no-overwrite-dir -C / -xzf cri-containerd-cni-1.5.7-linux-amd64.tar.gz
② 拷贝config.yaml
$ cp config.toml /etc/containerd/config.toml
③ 启动containerd
$ systemctl daemon-reload
$ systemctl start containerd
$ systemctl enable containerd

3.kubelet修改
① 备份kubelet.env、kubelet.service文件
$ cp /apps/conf/kubernetes/kubelet.env /apps/conf/kubernetes/kubelet.env-bak
$ cp /etcd/systemd/system/kubelet.service /apps/conf/kubernetes/

② 修改kubelet.env参数

新增参数

–container-runtime remote
–runtime-request-timeout=15m
–container-runtime-endpoint=unix:///run/containerd/containerd.sock \

修改参数

–runtime-cgroups=/system.slice/containerd.service
–pod-infra-container-image=registry.paas/cmss/pause:3.4.1

③ 修改/etc/systemd/system/kubelet.service或/usr/lib/systemd/system/kubelet.service

修改参数

After=containerd.service
Wants=containerd.service

④ 重启kubelet
$ systemctl daemon-reload
$ systemctl restart kubelet

4.节点恢复调度
$ sudo /apps/bin/kubectl uncordon {节点名称}

5.配置containerd日志转发
$ mkdir /apps/logs/containerd
$ touch /apps/logs/containerd/containerd.log
$ chown -R apps /apps/logs/containerd

$ cat < /etc/rsyslog.d/containerd.conf
if $programname == ‘containerd’ then /apps/logs/containerd/containerd.log
if $programname == ‘containerd’ then ~
EOF

重启rsyslog

$ systemctl restart rsyslog

配置containerd日志切割
cat </etc/logrotate.d/containerd
/apps/logs/containerd/*.log
{
daily
rotate 100
compress
missingok
copytruncate
delaycompress
maxsize 1G
minsize 1024k
notifempty
dateext
}
EOF

测试执行压缩命令

/usr/sbin/logrotate -vf /etc/logrotate.d/containerd

1.6.3 回滚
1.重启docker
$ systemctl restart docker

2.重启kubelet
$ cp /apps/conf/kubernetes/kubelet.env-bak /apps/conf/kubernetes/kubelet.env
$ cp /apps/conf/kubernetes/kubelet.service /etc/systemd/system/
$ systemctl restart kubelet

1.6.4 业务影响
容器运行时切换的过程中,会将该节点上的pod,预先进行驱逐,会导致该节点上的业务出现短暂的业务中断。
1.7 监控
1.7.1 版本
组件名称 现有版本 目标版本
metrics-server v0.3.1 v0.6.1
metrics-server v0.3.6 v0.6.1
kube-state-metrics v1.9.7 v2.1.1

1.7.2 拉齐步骤
1.准备工作
确认镜像上传
镜像:metrics-server:v0.6.1、kube-state-metrics:v2.1.1、kube-rbac-proxy:v0.11.0
确认以上镜像均已上传至该K8S环境使用的镜像仓库(根据实际镜像仓库地址添加仓库名/项目名)。
上传metrics-server部署文件
上传kube-state-metrics文件

2.备份
$ sudo /apps/bin/kubectl -n kube-system get deploy kube-state-metrics -oyaml > kube-state-metrics-deploy.yaml
$ sudo /apps/bin/kubectl -n kube-system get svc kube-state-metrics -oyaml > kube-state-metrics-svc.yaml

3.更新metrics-server
$ sudo /apps/bin/kubectl -n kube-system edit deploy metrics-server

将镜像tag更新为v0.6.1

4.删除kube-state-metrics
$ sudo /apps/bin/kubectl -n kube-system delete deploy kube-state-metrics
$ sudo /apps/bin/kubectl -n kube-system delete svc kube-state-metrics

5.部署kube-state-metrics
$ sudo /apps/bin/kubectl apply -f kube-state-metrics/*

1.7.3 回滚
1.回滚metrics-server
$ sudo /apps/bin/kubectl n kube-system edit deploy metrics-server

将镜像tag修改为 v0.3.6

2.回滚kube-state-metrics
$ sudo /apps/bin/kubectl delete -f kube-state-metrics/*
$ sudo /apps/bin/kubectl apply -f kube-state-metrics-deploy.yaml
$ sudo /apps/bin/kubectl apply -f kube-state-metrics-svc.yaml

1.7.4 业务影响
监控组件版本升级期间,不会对已有业务产生影响。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐