- 创建一个OSS的存储空间(Bucket)【已完成】
OSS Bucket 名称:yunwei-ack
集群迁移过程中,会使用你所指定的OSS bucket作为ETCD数据迁移的缓存,该举动会产生少量费用,敬请注意。迁移完毕后我们将清理数据以免产生额外费用。
- 请确保已跳转至访问控制台(RAM)为当前集群添加授权策略,详情请查看详细操作步骤。【已完成】
- 在迁移至Pro版对话框中,单击访问控制台(RAM)。
- 在Master RAM角色的详情页,单击以k8sMasterRolePolicy开头的授权策略名称。
- 在目标授权策略的详情页的策略内容页签,单击修改策略内容。
- 在修改策略内容面板中的Statement字段中补充以下策略内容,然后单击确定。
,
{
"Action": [
"oss:PutObject",
"oss:GetObject"
],
"Effect": "Allow",
"Resource": [
"acs:oss:*:*:yunwei-ack/*"
]
}
已将管控面组件(API Server、Kube Controller Manager、Cloud Controller Manager、Scheduler)和其他kube-system中的DaemonSet之外的Pod驱逐到Worker节点上。管控面组件在迁移之后会被托管的组件所替代。【已完成】
迁移检查【已完成】
在容器智能运维控制台的迁移检查页面,单击执行迁移检查。
在迁移检查面板中,选中注意事项中的内容,然后单击执行检查。
- 修改cloud-controller-manager的kube-system/cloud-config【阿里云反馈该问题已修复,暂时不操作,如果迁移报错再执行】
原因:因为集群创建的比较早,没有clusterid字段,迁移后会添加这个clusterid字段。这个变更对业务是有影响的,所以迁移时需要确认下,然后后台再进行操作。
影响:所有LoadBalancer类型的Service创建的SLB会有短暂的断开,老链接会闪断
# kubectl edit cm -n kube-system cloud-config
data:
cloud-config.conf: |-
{
"Global": {
"routeTableIDs": ""
}
}
- 修改为:
# kubectl edit cm -n kube-system cloud-config
data:
cloud-config.conf: |-
{
"Global": {
"routeTableIDs": "",
"clusterID": "cc5047ecb6b0649c29ee53e6040dcd172",
"serviceBackendType": "eni"
}
}
- 调整apiserver使用的slb【已完成】
- DUI-正式-ack-apiserver/10.63.43.15的etcd_2381监听,后端改为etcd-nodes;
- 迁移之后,DUI-正式-ack-apiserver-vip/121.196.124.134的tcp_6443监听会失效,以后daoker使用nginx代理访问vip集群:
# d1-public-001的nginx,配置文件/etc/nginx/streamconf/daoker-vip.conf
# vip-apiserver:
前端:120.27.233.212:6443
后端:10.63.43.15:6443
proxy_timeout 7200s;
# vip-etcd:
前端:120.27.233.212:2383
后端:
10.61.116.80:2383
10.62.77.50:2383
10.63.43.16:2383
- 迁移之后,apiserver使用的slb的tcp_6443监听不再配置ip白名单;
- 迁移完成之后,可以停止并释放DUI-正式-ack-apiserver-vip/121.196.124.134。
- 升级ACK核心组件
- Cloud Controller Manager
- terway-eniip
- CoreDNS
- 迁移集群
执行迁移集群后,迁移过程预计耗时5分钟。
- 删除专有版集群热迁移后的3个Master节点
- 执行以下命令删除目标Master节点:
kubectl delete node d1-dui-10061116080hd d1-dui-10062077050hd d1-dui-10063043016hd
- 执行如下命令停掉节点上的无用容器和服务:
kubectl get nodes $HOSTNAME
systemctl stop kubelet && systemctl disable kubelet
docker rm -f $(docker ps -q)
systemctl stop docker && systemctl disable docker
#systemctl stop etcd && systemctl disable etcd
- 重启apisix-ingress-controller,完成后 @孙程 检查服务日志
- apisix-ingress-controller-hd-v3
- apisix-ingress-controller-proxy
- apisix-ingress-controller-test
- apisix-ingress-controller-vip
- 修改Master节点KUBE_CONFIG中的apiserver地址为slb地址
for configfile in $(ls /root/.kube/config /home/*/.kube/config 2> /dev/null);do sed -i 's#server: https://.*:6443#server: https://10.63.43.15:6443#g' $configfile;done
- 删除Prometheus的无效Target
- kube-apiserver-d1-prod
- kube-kubelet-d1-prod
- kube-controller-manager-d1-prod
- kube-scheduler-d1-prod