[Kubernetes] Upgrade Kubernetes(v1.32.x) using Kubekey(v3.1.9) Artifact

offline 설치 위한 artifact 참고

script 다운로드 #

1curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.9 sh -

ubuntu-20.04-debs-amd64.iso 다운로드 #

1wget https://github.com/kubesphere/kubekey/releases/download/v3.1.9/ubuntu-20.04-debs-amd64.iso

artifact-3.1.9.yaml 작성 #

 1apiVersion: kubekey.kubesphere.io/v1alpha2
 2kind: Manifest
 3metadata:
 4  name: artifact-v3.1.9
 5spec:
 6  arches:
 7  - amd64
 8  operatingSystems:
 9  - arch: amd64
10    type: linux
11    id: ubuntu
12    version: "20.04"
13    osImage: Ubuntu 20.04.4 LTS
14    repository:
15      iso:
16        localPath: "/home/ubuntu/kk_install/ubuntu-20.04-debs-amd64.iso"
17        # url: "https://github.com/kubesphere/kubekey/releases/download/v3.1.1/ubuntu-20.04-debs-amd64.iso"
18  kubernetesDistributions:
19  - type: kubernetes
20    version: v1.32.4
21  components:
22    helm:
23      version: v3.14.3
24    cni:
25      version: v1.2.0
26    etcd:
27      version: v3.5.13
28    calicoctl:
29      version: v3.27.4
30    containerRuntimes:
31    - type: containerd
32      version: 1.7.13
33    crictl:
34      version: v1.29.0
35    harbor:
36      version: v2.10.1
37    docker-compose:
38      version: v2.26.1
39  images:
40  - docker.io/kubesphere/kube-apiserver:v1.30.12
41  - docker.io/kubesphere/kube-apiserver:v1.31.8
42  - docker.io/kubesphere/kube-apiserver:v1.32.4
43  - docker.io/kubesphere/kube-controller-manager:v1.30.12
44  - docker.io/kubesphere/kube-controller-manager:v1.31.8
45  - docker.io/kubesphere/kube-controller-manager:v1.32.4
46  - docker.io/kubesphere/kube-scheduler:v1.30.12
47  - docker.io/kubesphere/kube-scheduler:v1.31.8
48  - docker.io/kubesphere/kube-scheduler:v1.32.4
49  - docker.io/kubesphere/kube-proxy:v1.30.12
50  - docker.io/kubesphere/kube-proxy:v1.31.8
51  - docker.io/kubesphere/kube-proxy:v1.32.4
52  - docker.io/kubesphere/pause:3.9
53  - docker.io/coredns/coredns:1.9.3
54  - docker.io/calico/cni:v3.23.2
55  - docker.io/calico/cni:v3.27.3
56  - docker.io/calico/kube-controllers:v3.23.2
57  - docker.io/calico/kube-controllers:v3.27.4
58  - docker.io/calico/node:v3.23.2
59  - docker.io/calico/node:v3.27.4
60  - docker.io/calico/pod2daemon-flexvol:v3.23.2
61  - docker.io/calico/pod2daemon-flexvol:v3.27.4
62  - docker.io/calico/typha:v3.23.2
63  - docker.io/calico/typha:v3.27.4
64  - docker.io/kubesphere/flannel:v0.12.0
65  - docker.io/openebs/provisioner-localpv:3.3.0
66  - docker.io/openebs/linux-utils:3.3.0
67  - docker.io/library/haproxy:2.3
68  - docker.io/kubesphere/nfs-subdir-external-provisioner:v4.0.2
69  - docker.io/kubesphere/k8s-dns-node-cache:1.15.12
70  registry:
71    auths:
72      "docker.io":
73        username: "username"
74        password: "password"

components version 확인(지원하는 version이 없을 시 아래와 같이 Error) #

Failed to download docker binary: curl -L -o /home/ubuntu/kk_install/kubekey/artifact/docker/20.10.8/amd64/docker-20.10.8.tgz https://download.docker.com/linux/static/stable/x86_64/docker-20.10.8.tgz error: No SHA256 found for docker. 20.10.8 is not supported.
17:40:24 KST failed: [LocalHost]
error: Pipeline[ArtifactExportPipeline] execute failed: Module[ArtifactBinariesModule] exec failed:
failed: [LocalHost] [DownloadBinaries] exec failed after 1 retries: Failed to download docker binary: curl -L -o /home/ubuntu/kk_install/kubekey/artifact/docker/20.10.8/amd64/docker-20.10.8.tgz https://download.docker.com/linux/static/stable/x86_64/docker-20.10.8.tgz error: No SHA256 found for docker. 20.10.8 is not supported.

Components 참고

Export Artifact #

1sudo ./kk artifact export -m artifact-3.1.9.yaml -o artifact-3.1.9.tar.gz

Cluster 업그레이드를 위한 config 파일 생성 및 작성 #

1sudo ./kk create config --with-kubesphere v3.3.2 --with-kubernetes v1.32.4 -f config-v1.32.4.yaml
1vi config-v1.32.4.yaml
 1apiVersion: kubekey.kubesphere.io/v1alpha2
 2kind: Cluster
 3metadata:
 4  name: sample
 5spec:
 6  hosts:
 7  - {name: kk-repo, address: 192.168.0.100, internalAddress: 192.168.0.100, privateKeyPath: "/home/ubuntu/.ssh/id_rsa_multipass"}
 8  - {name: kk-master, address: 192.168.0.101, internalAddress: 192.168.0.101, privateKeyPath: "/home/ubuntu/.ssh/id_rsa_multipass"}
 9  - {name: kk-worker-1, address: 192.168.0.102, internalAddress: 192.168.0.102, privateKeyPath: "/home/ubuntu/.ssh/id_rsa_multipass"}
10  - {name: kk-worker-2, address: 192.168.0.103, internalAddress: 192.168.0.103, privateKeyPath: "/home/ubuntu/.ssh/id_rsa_multipass"}
11  roleGroups:
12    etcd:
13    - kk-master
14    control-plane:
15    - kk-master
16    worker:
17    - kk-worker-1
18    - kk-worker-2
19    registry:
20    - kk-repo
21  controlPlaneEndpoint:
22    ## Internal loadbalancer for apiservers
23    # internalLoadbalancer: haproxy
24
25    domain: lb.kubesphere.local
26    # domain: 192.168.0.101
27    address: "192.168.0.101"
28    port: 6443
29  kubernetes:
30    version: v1.29.3
31    imageRepo: kubesphere
32    clusterName: cluster.local
33    masqueradeAll: false
34    maxPods: 150
35    nodeCidrMaskSize: 24
36    proxyMode: ipvs
37    autoRenewCerts: true
38    containerManager: containerd
39    featureGates:
40      RotateKubeletServerCertificate: true
41    apiserverArgs:
42    - default-not-ready-toleration-seconds=30
43    - default-unreachable-toleration-seconds=30
44    controllerManagerArgs:
45    - node-monitor-period=2s
46    - node-monitor-grace-period=16s
47    kubeletConfiguration:
48      nodeStatusUpdateFrequency: 4s
49  # etcd:
50    # type: kubekey
51  network:
52    plugin: calico
53    calico:
54      ipipMode: Always
55      vxianMode: Never
56      vethMTU: 1440
57    kubePodsCIDR: 10.233.64.0/18
58    kubeServiceCIDR: 10.233.0.0/18
59    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
60    multusCNI:
61      enabled: false
62  registry:
63    type: harbor
64    auths:
65      "cr.harbor.kubekey.com":
66        username: admin
67        password: Harbor12345
68    privateRegistry: "cr.harbor.kubekey.com"
69    namespaceOverride: "kubesphereio"
70    registryMirrors: []
71    insecureRegistries: ["cr.harbor.kubekey.com"]
72  addons: []

Upgrade #

1sudo ./kk upgrade cluster -f config-v1.32.4.yaml -a artifact-3.1.9.tar.gz

--skip-dependency-check를 추가하면 Kubernetes 및 KubeSphere 버전 의존성 검사를 생략할 수 있다.

1sudo ./kk upgrade cluster -f config-v1.32.4.yaml -a artifact-3.1.9.tar.gz --skip-dependency-check

{: .prompt-tip }

image 별도로 push 방법

1sudo ./kk artifact image push -f config-v1.32.4.yaml -a artifact-3.1.9.tar.gz

{: .prompt-tip }

[ERROR] Harbor에 image push 할 때 Unauthorized 에러 발생 때

  • 다시 로그인
1docker login [your.host.com]:port -u username -p password
2sudo docker login https://cr.harbor.kubekey.com -u admin -p Harbor12345

{: .prompt-danger }

kubekey command 참고

Upgrade log 확인 #

1kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f
Advertisement