0
点赞
收藏
分享

微信扫一扫

GKE 和 EKS 升级K8S 集群

概述

最近升级GKE和EKS的K8S集群,感觉在K8S托管服务这一块,Google和AWS做的差距也太大了。Google的GKE界面做的很好,基本可以替代dashboard了,然后他的升级做的非常简单,管理员点击几个按钮,然后一切搞定;而AWS的EKS,管理界面及其简单,那个升级按钮只能升级 control plane,剩下的worker node和上面的各种服务组件 管理员都得看着升级匹配表格手动升级,这些活都得手动做,感觉我托管了个寂寞啊~。

下面简单的看看两者的升级过程。

EKS升级

心法总纲在此,里面还有很多细节需要满足
https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html

总的来说,步骤如下,这是之前升级1.19到1.20的过程:

1. 修改tf 升级 control plane

必须按顺序升级。这一步也可以在图形界面点升级实现

module "eks" {
  source          = "terraform-aws-modules/eks/aws"
  version         = "17.24.0"
  cluster_name    = local.cluster_name
  cluster_version = "1.20"
  subnets         = data.terraform_remote_state.vpc.outputs.snet_subnet_id

2. 升级 work node

通过asg修改desire 数目,创建新的node,然后在旧的node上面执行cordon和drain,强制迁移pod,然后删除旧的node,修改asg为原先数目

kubectl cordon  ip-10-18-4-125.ap-southeast-2.compute.internal
kubectl drain  ip-10-18-4-125.ap-southeast-2.compute.internal --ignore-daemonsets --delete-emptydir-data
kubectl delete node ip-10-18-4-125.ap-southeast-2.compute.internal

3. 升级 kube-proxy,coredns和 vpc cni

他们有个依赖关系的版本表,需要比照一下

升级kube-proxy:

kubectl get daemonset kube-proxy --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
kubectl set image daemonset.apps/kube-proxy \
     -n kube-system \
     kube-proxy=602401143452.dkr.ecr.ap-southeast-2.amazonaws.com/eks/kube-proxy:v1.21.2-eksbuild.2
Kubectl get pod -n tube-system

升级core-dns:

kubectl describe pod coredns --namespace kube-system | grep Image |grep eksbuild | cut -d "/" -f 3
kubectl set image --namespace kube-system deployment.apps/coredns \
    coredns=602401143452.dkr.ecr.us-east-1.amazonaws.com/eks/coredns:v1.8.0-eksbuild.1

升级cni:

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.8.0/config/v1.8/aws-k8s-cni.yaml
sed -i -e 's/us-west-2/ap-southeast-2/' aws-k8s-cni.yaml
kubectl apply -f aws-k8s-cni.yaml

GKE 升级

总纲在此
https://cloud.google.com/kubernetes-engine/docs/how-to/upgrading-a-cluster#console

基本上就是鼠标点三次,然后一切搞定

首先升级control panel
image.png

image.png

升级到1.24的时候会提示runtime从docker变成containerd了

image.png

更改也容易

image.png

升级完control panel,继续升级worker node

image.png

升级成功

image.png

举报

相关推荐

0 条评论