利用 KubeKey v3.1.1 离线摆设原生 Kubernetes v1.28.8 实战

打印 上一主题 下一主题

主题 980|帖子 980|积分 2950

今天,我将为大家实战演示,怎样基于操作系统 openEuler 22.03 LTS SP3,利用 KubeKey 制作 Kubernetes 离线安装包,并实战离线摆设 Kubernetes v1.28.8 集群。
实战服务器设置 (架构 1:1 复刻小规模生产情况,设置略有不同)
主机名IPCPU内存系统盘数据盘用途ksp-control-1192.168.9.9181640100离线情况 k8s-control-planeksp-control-2192.168.9.9281640100离线情况 k8s-control-planeksp-control-3192.168.9.9381640100离线情况 k8s-control-planeksp-registry192.168.9.904840100离线情况摆设节点和镜像堆栈节点ksp-deploy192.168.9.894840100联网主机用于制作离线包合计53264200500实战情况涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3
  • Kubernetes:v1.28.8
  • KubeKey:  v3.1.1
1. 制作离线摆设资源

本文增长了一台能联网的 ksp-deploy 节点,在该节点下载 KubeKey 最新版(v3.1.1),用来制作离线摆设资源包。
1.1 下载 KubeKey


  • 下载最新版的 KubeKey
  1. mkdir -p /data/kubekey
  2. cd /data/kubekey
  3. # 选择中文区下载(访问 GitHub 受限时使用)
  4. export KKZONE=cn
  5. # 执行下载命令,获取最新版的 kk(受限于网络,有时需要执行多次)
  6. curl -sfL https://get-kk.kubesphere.io | sh -
复制代码
1.2 创建 manifests 模板文件

KubeKey v3.1.0 之前, manifests 文件需要根据模板手动编写, 现在可以通过 Kubekey 的  create manifest 命令自动天生 manifests 模板。

  • create manifest 支持的参数如下
  1. $ ./kk create manifest --help
  2. Create an offline installation package configuration file
  3. Usage:
  4.   kk create manifest [flags]
  5. Flags:
  6.       --arch stringArray         Specify a supported arch (default [amd64])
  7.       --debug                    Print detailed information
  8.   -f, --filename string          Specify a manifest file path
  9.   -h, --help                     help for manifest
  10.       --ignore-err               Ignore the error message, remove the host which reported error and force to continue
  11.       --kubeconfig string        Specify a kubeconfig file
  12.       --name string              Specify a name of manifest object (default "sample")
  13.       --namespace string         KubeKey namespace to use (default "kubekey-system")
  14.       --with-kubernetes string   Specify a supported version of kubernetes
  15.       --with-registry            Specify a supported registry components
  16.   -y, --yes                      Skip confirm check
复制代码

  • 官方示例(支持多集群、多架构)
  1. # 示例:创建包含 kubernetes v1.24.17,v1.25.16,且 cpu 架构为 amd64、arm64 的 manifests 文件。
  2. ./kk create manifest --with-kubernetes v1.24.17,v1.25.16 --arch amd64 --arch arm64
复制代码

  • 创建一个 amd64 架构 kubernetes v1.28.8 的 manifests 文件
  1. ./kk create manifest --name opsxlab --with-kubernetes v1.28.8 --arch amd64 --with-registry "docker registry"
复制代码

  • 天生的设置文件如下
  1. apiVersion: kubekey.kubesphere.io/v1alpha2
  2. kind: Manifest
  3. metadata:
  4. name: opsxlab
  5. spec:
  6. arches:
  7. - amd64
  8. operatingSystems:
  9. - arch: amd64
  10.    type: linux
  11.    id: ubuntu
  12.    version: "20.04"
  13.    osImage: Ubuntu 20.04.6 LTS
  14.    repository:
  15.      iso:
  16.        localPath:
  17.        url:
  18. kubernetesDistributions:
  19. - type: kubernetes
  20.    version: v1.28.8
  21. components:
  22.    helm:
  23.      version: v3.14.3
  24.    cni:
  25.      version: v1.2.0
  26.    etcd:
  27.      version: v3.5.13
  28.    containerRuntimes:
  29.    - type: docker
  30.      version: 24.0.9
  31.    - type: containerd
  32.      version: 1.7.13
  33.    calicoctl:
  34.      version: v3.27.3
  35.    crictl:
  36.      version: v1.29.0
  37.    docker-registry:
  38.      version: "2"
  39.    harbor:
  40.      version: v2.10.1
  41.    docker-compose:
  42.      version: v2.26.1
  43. images:
  44. - docker.io/kubesphere/pause:3.9
  45. - docker.io/kubesphere/kube-apiserver:v1.28.8
  46. - docker.io/kubesphere/kube-controller-manager:v1.28.8
  47. - docker.io/kubesphere/kube-scheduler:v1.28.8
  48. - docker.io/kubesphere/kube-proxy:v1.28.8
  49. - docker.io/coredns/coredns:1.9.3
  50. - docker.io/kubesphere/k8s-dns-node-cache:1.22.20
  51. - docker.io/calico/kube-controllers:v3.27.3
  52. - docker.io/calico/cni:v3.27.3
  53. - docker.io/calico/node:v3.27.3
  54. - docker.io/calico/pod2daemon-flexvol:v3.27.3
  55. - docker.io/calico/typha:v3.27.3
  56. - docker.io/flannel/flannel:v0.21.3
  57. - docker.io/flannel/flannel-cni-plugin:v1.1.2
  58. - docker.io/cilium/cilium:v1.15.3
  59. - docker.io/cilium/operator-generic:v1.15.3
  60. - docker.io/hybridnetdev/hybridnet:v0.8.6
  61. - docker.io/kubeovn/kube-ovn:v1.10.10
  62. - docker.io/kubesphere/multus-cni:v3.8
  63. - docker.io/openebs/provisioner-localpv:3.3.0
  64. - docker.io/openebs/linux-utils:3.3.0
  65. - docker.io/library/haproxy:2.9.6-alpine
  66. - docker.io/plndr/kube-vip:v0.7.2
  67. - docker.io/kubesphere/kata-deploy:stable
  68. - docker.io/kubesphere/node-feature-discovery:v0.10.0
  69. registry:
  70.    auths: {}
复制代码
默认的设置文件说明:

  • KubeKey v3.1.1 天生的 manifests 设置文件实用于 ubuntu 摆设纯 Kubernetes 集群。因此,我们需要稍作修改,天生一份适配 openEuler 22.03 LTS SP3 的 manifests 文件。
  • images 列表中有一些镜像实际上用不到,可以删除。本文保留了所有镜像。
1.3 修改 manifest 模板文件

根据上面的文件及干系信息,天生终极的 manifest 文件 ksp-v1.28.8-manifest-opsxlab.yaml
  1. apiVersion: kubekey.kubesphere.io/v1alpha2
  2. kind: Manifest
  3. metadata:
  4.   name: opsxlab
  5. spec:
  6.   arches:
  7.   - amd64
  8.   operatingSystems:
  9.   - arch: amd64
  10.     type: linux
  11.     id: openEuler
  12.     version: "22.03"
  13.     osImage: openEuler 22.03 (LTS-SP3)
  14.     repository:
  15.       iso:
  16.         localPath: "/data/kubekey/openEuler-22.03-rpms-amd64.iso"
  17.         url:
  18.   kubernetesDistributions:
  19.   - type: kubernetes
  20.     version: v1.28.8
  21.   components:
  22.     helm:
  23.       version: v3.14.3
  24.     cni:
  25.       version: v1.2.0
  26.     etcd:
  27.       version: v3.5.13
  28.     containerRuntimes:
  29.     - type: docker
  30.       version: 24.0.9
  31.     - type: containerd
  32.       version: 1.7.13
  33.     calicoctl:
  34.       version: v3.27.3
  35.     crictl:
  36.       version: v1.29.0
  37.     docker-registry:
  38.       version: "2"
  39.     harbor:
  40.       version: v2.10.1
  41.     docker-compose:
  42.       version: v2.26.1
  43.   images:
  44.   - docker.io/kubesphere/pause:3.9
  45.   - docker.io/kubesphere/kube-apiserver:v1.28.8
  46.   - docker.io/kubesphere/kube-controller-manager:v1.28.8
  47.   - docker.io/kubesphere/kube-scheduler:v1.28.8
  48.   - docker.io/kubesphere/kube-proxy:v1.28.8
  49.   - docker.io/coredns/coredns:1.9.3
  50.   - docker.io/kubesphere/k8s-dns-node-cache:1.22.20
  51.   - docker.io/calico/kube-controllers:v3.27.3
  52.   - docker.io/calico/cni:v3.27.3
  53.   - docker.io/calico/node:v3.27.3
  54.   - docker.io/calico/pod2daemon-flexvol:v3.27.3
  55.   - docker.io/calico/typha:v3.27.3
  56.   - docker.io/flannel/flannel:v0.21.3
  57.   - docker.io/flannel/flannel-cni-plugin:v1.1.2
  58.   - docker.io/cilium/cilium:v1.15.3
  59.   - docker.io/cilium/operator-generic:v1.15.3
  60.   - docker.io/hybridnetdev/hybridnet:v0.8.6
  61.   - docker.io/kubeovn/kube-ovn:v1.10.10
  62.   - docker.io/kubesphere/multus-cni:v3.8
  63.   - docker.io/openebs/provisioner-localpv:3.3.0
  64.   - docker.io/openebs/linux-utils:3.3.0
  65.   - docker.io/library/haproxy:2.9.6-alpine
  66.   - docker.io/plndr/kube-vip:v0.7.2
  67.   - docker.io/kubesphere/kata-deploy:stable
  68.   - docker.io/kubesphere/node-feature-discovery:v0.10.0
  69.   - docker.io/kubesphere/busybox:1.31.1
  70.   registry:
  71.     auths: {}
复制代码
manifest 修改说明

  • operatingSystems 设置删除默认的 ubuntu,新增 openEuler 设置
  • 建议把常用的 nginx、busybox 等基础镜像也加到 images 列表中
1.4 获取操作系统依赖包

本实验情况利用的操作系统是 x64 的 openEuler 22.03 LTS SP3,需要自己制作安装 Kubernetes 需要的操作系统依赖包镜像 openEuler-22.03-rpms-amd64.iso,其他操作系统请读者在 KubeKey releases 页面下载。
KubeKey 官方支持的操作系统依赖包,包含以下系统:

  • almalinux-9.0
  • centos7
  • debian10
  • debian11
  • ubuntu-18.04
  • ubuntu-20.04
  • ubuntu-22.04
个人建议在离线情况用 openEuler 的安装 ISO,制做一个完整的离线软件源。在利用 KubeKey 安装离线集群时,就不需要考虑操作系统依赖包的问题。
1.5 导出成品 artifact

根据天生的 manifest,执行下面的命令制作成品(artifact)。
  1. export KKZONE=cn
  2. ./kk artifact export -m ksp-v1.28.8-manifest-opsxlab.yaml -o ksp-offline-v1.28-artifact.tar.gz
复制代码
正确执行后,输出结果如下(受限于篇幅,仅展示终极结果):
  1. ....
  2. kube/v1.28.8/amd64/kubeadm
  3. kube/v1.28.8/amd64/kubectl
  4. kube/v1.28.8/amd64/kubelet
  5. registry/compose/v2.26.1/amd64/docker-compose-linux-x86_64
  6. registry/harbor/v2.10.1/amd64/harbor-offline-installer-v2.10.1.tgz
  7. registry/registry/2/amd64/registry-2-linux-amd64.tar.gz
  8. repository/amd64/openEuler/22.03/openEuler-22.03-amd64.iso
  9. runc/v1.1.12/amd64/runc.amd64
  10. 06:44:12 CST success: [LocalHost]
  11. 06:44:12 CST [ChownOutputModule] Chown output file
  12. 06:44:12 CST success: [LocalHost]
  13. 06:44:12 CST [ChownWorkerModule] Chown ./kubekey dir
  14. 06:44:12 CST success: [LocalHost]
  15. 06:44:12 CST Pipeline[ArtifactExportPipeline] execute successfull
复制代码
成品制作完成后,查看成品大小(全镜像,成品包居然达到了 2.7G,实际利用时尽量有选择的裁剪吧)。
  1. $ ls -lh ksp-offline-v1.28-artifact.tar.gz
  2. -rw-r--r-- 1 root root 2.7G May 31 06:44 ksp-offline-v1.28-artifact.tar.gz
复制代码
1.6 导出 KubeKey 离线安装包

把 KubeKey 工具也制作成压缩包,便于拷贝到离线节点。
  1. $ tar zcvf kubekey-offline-v1.28.tar.gz kk kubekey-v3.1.1-linux-amd64.tar.gz
复制代码
2. 准备离线摆设 Kubernetes 的前置数据

请注意,以下操作无特殊说明,均在离线情况摆设(Registry)节点上执行。
2.1 上传离线摆设资源包到摆设节点

将以下离线摆设资源包,上传至离线情况摆设(Registry) 节点的 /data/ 目次(可根据实际情况修改)。

  • Kubekey:kubekey-offline-v1.28.tar.gz
  • 成品 artifact:ksp-offline-v1.28-artifact.tar.gz
执行以下命令,解压 KubeKey:
  1. # 创离线资源存放的数据目录
  2. mkdir /data/kubekey
  3. tar xvf /data/kubekey-offline-v1.28.tar.gz -C /data/kubekey
  4. mv ksp-offline-v1.28-artifact.tar.gz /data/kubekey
复制代码
注意: openEuler 默认不安装 tar,请自己想办法在离线摆设节点上安装 tar。
2.2 创建离线集群设置文件


  • 执行以下命令创建离线集群设置文件
  1. cd /data/kubekey
  2. ./kk create config --with-kubernetes v1.28.8 -f ksp-v1228-offline.yaml
复制代码
命令执行成功后,在当前目次会天生文件名为 ksp-v1228-offline.yaml 的设置文件。
2.3 修改 Cluster 设置

离线集群设置文件中 kind: Cluster 小节的作用是摆设 Kubernetes 集群。本示例接纳 3 个节点同时作为 control-plane、etcd 节点和 worker 节点。
执行命令,修改离线集群设置文件 ksp-v1228-offline.yaml:
  1. vi ksp-v1228-offline.yaml
复制代码
修改 kind: Cluster 小节中 hosts 和 roleGroups 等信息,修改说明如下。

  • hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口。示例演示了 ssh 端口号的设置方法。同时,新增一个 Registry 节点的设置
  • roleGroups:指定 3 个 etcd、control-plane 节点,复用雷同的机器作为 3 个 worker 节点
  • 必须指定主机组 registry 作为堆栈摆设节点
  • internalLoadbalancer: 启用内置的 HAProxy 负载均衡器
  • system.rpms:新增设置,摆设时安装 rpm 包(openEuler 系统默认没有安装 tar 包,必须提前安装)
  • domain:自定义了一个 opsxlab.cn,没特殊需求的场景保留默认值即可
  • containerManager:利用 containerd
  • storage.openebs.basePath:新增设置,指定 openebs 默认存储路径为 /data/openebs/local
  • registry:不指定 type 范例,默认安装 docker registry
修改后的完整示例如下:
  1. apiVersion: kubekey.kubesphere.io/v1alpha2
  2. kind: Cluster
  3. metadata:
  4.   name: sample
  5. spec:
  6.   hosts:
  7.   - {name: ksp-control-1, address: 192.168.9.91, internalAddress: 192.168.9.91, port:22, user: root, password: "OpsXlab@2024"}
  8.   - {name: ksp-control-2, address: 192.168.9.92, internalAddress: 192.168.9.92, user: root, password: "OpsXlab@2024"}
  9.   - {name: ksp-control-3, address: 192.168.9.93, internalAddress: 192.168.9.93, user: root, password: "OpsXlab@2024"}
  10.   - {name: ksp-registry, address: 192.168.9.90, internalAddress: 192.168.9.90, user: root, password: "OpsXlab@2024"}
  11.   roleGroups:
  12.     etcd:
  13.     - ksp-control-1
  14.     - ksp-control-2
  15.     - ksp-control-3
  16.     control-plane:
  17.     - ksp-control-1
  18.     - ksp-control-2
  19.     - ksp-control-3
  20.     worker:
  21.     - ksp-control-1
  22.     - ksp-control-2
  23.     - ksp-control-3
  24.     registry:
  25.     - ksp-registry
  26.   controlPlaneEndpoint:
  27.     ## Internal loadbalancer for apiservers
  28.     internalLoadbalancer: haproxy
  29.     domain: lb.opsxlab.cn
  30.     address: ""
  31.     port: 6443
  32.   system:
  33.     rpms:
  34.       - tar
  35.   kubernetes:
  36.     version: v1.28.8
  37.     clusterName: opsxlab.cn
  38.     autoRenewCerts: true
  39.     containerManager: containerd
  40.   etcd:
  41.     type: kubekey
  42.   network:
  43.     plugin: calico
  44.     kubePodsCIDR: 10.233.64.0/18
  45.     kubeServiceCIDR: 10.233.0.0/18
  46.     ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
  47.     multusCNI:
  48.       enabled: false
  49.   storage:
  50.     openebs:
  51.       basePath: /data/openebs/local # 默认没有的新增配置,base path of the local PV provisioner
  52.   registry:
  53.     auths:
  54.       "registry.opsxlab.cn":
  55.         certsPath: "/etc/docker/certs.d/registry.opsxlab.cn"
  56.     privateRegistry: "registry.opsxlab.cn"
  57.     namespaceOverride: "kubesphereio"
  58.     registryMirrors: []
  59.     insecureRegistries: []
  60.   addons: []
复制代码
3. 离线摆设镜像堆栈

为了验证 Kubekey 离线摆设镜像堆栈服务的能力,本文接纳 Kubekey 摆设镜像堆栈 Docker Registry小规模生产情况没必要利用 Harbor
请注意,以下操作无特殊说明,均在离线情况摆设(Registry)节点上执行。
3.1 安装 Docker Registry

执行以下命令安装镜像堆栈 Docker Registry
  1. ./kk init registry -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz
复制代码
正确执行后,输出结果如下(受限于篇幅,仅展示终极结果):
  1. 07:02:15 CST [InitRegistryModule] Fetch registry certs
  2. 07:02:15 CST success: [ksp-registry]
  3. 07:02:15 CST [InitRegistryModule] Generate registry Certs
  4. [certs] Generating "ca" certificate and key
  5. [certs] registry.opsxlab.cn serving cert is signed for DNS names [ksp-registry localhost registry.opsxlab.cn] and IPs [127.0.0.1 ::1 192.168.9.90]
  6. 07:02:16 CST success: [LocalHost]
  7. 07:02:16 CST [InitRegistryModule] Synchronize certs file
  8. 07:02:19 CST success: [ksp-registry]
  9. 07:02:19 CST [InitRegistryModule] Synchronize certs file to all nodes
  10. 07:02:25 CST success: [ksp-registry]
  11. 07:02:25 CST success: [ksp-control-2]
  12. 07:02:25 CST success: [ksp-control-1]
  13. 07:02:25 CST success: [ksp-control-3]
  14. 07:02:25 CST [InstallRegistryModule] Install registry binary
  15. 07:02:25 CST success: [ksp-registry]
  16. 07:02:25 CST [InstallRegistryModule] Generate registry service
  17. 07:02:26 CST success: [ksp-registry]
  18. 07:02:26 CST [InstallRegistryModule] Generate registry config
  19. 07:02:27 CST success: [ksp-registry]
  20. 07:02:27 CST [InstallRegistryModule] Start registry service
  21. Local image registry created successfully. Address: registry.opsxlab.cn
  22. 07:02:27 CST success: [ksp-registry]
  23. 07:02:27 CST [ChownWorkerModule] Chown ./kubekey dir
  24. 07:02:27 CST success: [LocalHost]
  25. 07:02:27 CST Pipeline[InitRegistryPipeline] execute successfully
复制代码

  • 查看 Docker 是否设置了私有证书(确保利用了自定义域名及证书
  1. $ ls /etc/ssl/registry/ssl/
  2. ca.crt  ca-key.pem  ca.pem  registry.opsxlab.cn.cert  registry.opsxlab.cn.key  registry.opsxlab.cn-key.pem  registry.opsxlab.cn.pem
  3. $ ls /etc/docker/certs.d/registry.opsxlab.cn/
  4. ca.crt  registry.opsxlab.cn.cert  registry.opsxlab.cn.key
复制代码
3.2 推送离线镜像到镜像堆栈

将提前准备好的离线镜像推送到镜像堆栈,这一步为可选项,因为创建集群的时间默认会推送镜像(本文利用参数忽略了)。为了摆设成功率,建议先推送。

  • 推送离线镜像
  1. ./kk artifact image push -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz
复制代码

  • 正确的安装结果如下(受限于篇幅,内容有删减):
  1. ......
  2. 07:04:34 CST Push multi-arch manifest list: registry.opsxlab.cn/kubesphereio/kube-controllers:v3.27.3
  3. INFO[0035] Retrieving digests of member images
  4. 07:04:34 CST Digest: sha256:70bfc9dcf0296a14ae87035b8f80911970cb0990c4bb832fc4cf99937284c477 Length: 393
  5. 07:04:34 CST success: [LocalHost]
  6. 07:04:34 CST [ChownWorkerModule] Chown ./kubekey dir
  7. 07:04:34 CST success: [LocalHost]
  8. 07:04:34 CST Pipeline[ArtifactImagesPushPipeline] execute successfully
复制代码
4. 离线摆设 Kubernetes 集群

请注意,以下操作无特殊说明,均在离线情况摆设(Registry)节点上执行。
4.1 离线摆设 Kubernetes 集群

执行以下命令,摆设 Kubernetes 集群。
  1. ./kk create cluster -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz --with-packages --skip-push-images
复制代码
参数说明:

  • --with-packages:安装操作系统依赖
  • --skip-push-images: 忽略推送镜像,前面已经完成了推送镜像到私有堆栈的使命
摆设完成后,您应该会在终端上看到雷同于下面的输出。
  1. daemonset.apps/calico-node created
  2. deployment.apps/calico-kube-controllers created
  3. 10:19:05 CST skipped: [ksp-control-3]
  4. 10:19:05 CST skipped: [ksp-control-2]
  5. 10:19:05 CST success: [ksp-control-1]
  6. 10:19:05 CST [ConfigureKubernetesModule] Configure kubernetes
  7. 10:19:05 CST success: [ksp-control-1]
  8. 10:19:05 CST skipped: [ksp-control-2]
  9. 10:19:05 CST skipped: [ksp-control-3]
  10. 10:19:05 CST [ChownModule] Chown user $HOME/.kube dir
  11. 10:19:05 CST success: [ksp-control-2]
  12. 10:19:05 CST success: [ksp-control-1]
  13. 10:19:05 CST success: [ksp-control-3]
  14. 10:19:05 CST [AutoRenewCertsModule] Generate k8s certs renew script
  15. 10:19:07 CST success: [ksp-control-3]
  16. 10:19:07 CST success: [ksp-control-2]
  17. 10:19:07 CST success: [ksp-control-1]
  18. 10:19:07 CST [AutoRenewCertsModule] Generate k8s certs renew service
  19. 10:19:08 CST success: [ksp-control-1]
  20. 10:19:08 CST success: [ksp-control-2]
  21. 10:19:08 CST success: [ksp-control-3]
  22. 10:19:08 CST [AutoRenewCertsModule] Generate k8s certs renew timer
  23. 10:19:09 CST success: [ksp-control-2]
  24. 10:19:09 CST success: [ksp-control-3]
  25. 10:19:09 CST success: [ksp-control-1]
  26. 10:19:09 CST [AutoRenewCertsModule] Enable k8s certs renew service
  27. 10:19:10 CST success: [ksp-control-2]
  28. 10:19:10 CST success: [ksp-control-1]
  29. 10:19:10 CST success: [ksp-control-3]
  30. 10:19:10 CST [SaveKubeConfigModule] Save kube config as a configmap
  31. 10:19:10 CST success: [LocalHost]
  32. 10:19:10 CST [AddonsModule] Install addons
  33. 10:19:10 CST success: [LocalHost]
  34. 10:19:10 CST Pipeline[CreateClusterPipeline] execute successfully
  35. Installation is complete.
  36. Please check the result using the command:
  37.         kubectl get pod -A
复制代码
在 control-1 节点,执行命令 kubectl get pod -A,查看集群摆设的终极结果,确保所有 Pod 的状态均为 Running
  1. $ kubectl get pod -A
  2. NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
  3. kube-system   calico-kube-controllers-76bdc94776-dztgc   1/1     Running   0          2m51s
  4. kube-system   calico-node-mxmm6                          1/1     Running   0          2m51s
  5. kube-system   calico-node-p57qs                          1/1     Running   0          2m51s
  6. kube-system   calico-node-pf5pb                          1/1     Running   0          2m51s
  7. kube-system   coredns-6587775575-tp6sg                   1/1     Running   0          3m16s
  8. kube-system   coredns-6587775575-v9jc6                   1/1     Running   0          3m16s
  9. kube-system   kube-apiserver-ksp-control-1               1/1     Running   0          3m28s
  10. kube-system   kube-apiserver-ksp-control-2               1/1     Running   0          2m45s
  11. kube-system   kube-apiserver-ksp-control-3               1/1     Running   0          2m49s
  12. kube-system   kube-controller-manager-ksp-control-1      1/1     Running   0          3m28s
  13. kube-system   kube-controller-manager-ksp-control-2      1/1     Running   0          2m57s
  14. kube-system   kube-controller-manager-ksp-control-3      1/1     Running   0          2m57s
  15. kube-system   kube-proxy-8mqvs                           1/1     Running   0          2m56s
  16. kube-system   kube-proxy-p9j9b                           1/1     Running   0          2m56s
  17. kube-system   kube-proxy-sdtgl                           1/1     Running   0          2m56s
  18. kube-system   kube-scheduler-ksp-control-1               1/1     Running   0          3m28s
  19. kube-system   kube-scheduler-ksp-control-2               1/1     Running   0          3m1s
  20. kube-system   kube-scheduler-ksp-control-3               1/1     Running   0          3m1s
  21. kube-system   nodelocaldns-9gj5t                         1/1     Running   0          3m1s
  22. kube-system   nodelocaldns-n7wwm                         1/1     Running   0          3m2s
  23. kube-system   nodelocaldns-sbmxl                         1/1     Running   0          3m16s
复制代码
4.2 kubectl 命令行验证集群状态

在 control-1 节点运行 kubectl 命令获取 Kubernetes 集群资源信息。

  • 查看集群节点信息
  1. kubectl get nodes -o wide
复制代码
在输出结果中可以看到,当前的 Kubernetes 集群有 3个节点,并详细展示每个节点的名字、状态、角色、存活时间、Kubernetes 版本号、内部 IP、操作系统范例、内核版本和容器运行时等信息。
  1. $ kubectl get nodes -o wide
  2. NAME           STATUS   ROLES                  AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION                       CONTAINER-RUNTIME
  3. ksp-control-1   Ready    control-plane,worker   7m45s   v1.28.8   192.168.9.91   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
  4. ksp-control-2   Ready    control-plane,worker   7m14s   v1.28.8   192.168.9.92   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
  5. ksp-control-3   Ready    control-plane,worker   7m15s   v1.28.8   192.168.9.93   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
复制代码

  • 查看 Pod 列表
输入以下命令获取在 Kubernetes 集群上运行的 Pod 列表,确保所有的容器状态都是 Running受限于篇幅,内容不展示)。
  1. kubectl get pods -o wide -A
复制代码
至此,我们摆设完成了一套 Control-plane 和 Worker 复用,3 节点的 Kubernetes 集群。
免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战情况验证测试,读者可学习、借鉴,但严禁直接用于生产情况由此引发的任何问题,作者概不负责
本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

泉缘泉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表