KubeKey 部署 K8s v1.28.8 实战

打印 上一主题 下一主题

主题 513|帖子 513|积分 1539

在某些生产环境下,我们仅需要一个原生的 K8s 集群,无需部署 KubeSphere 这样的图形化管理控制台。在我们已有的技能栈里,已经风俗了利用 KubeKey 部署 KubeSphere 和 K8s 集群。今天,我将为各人实战演示如何在 openEuler 22.03 LTS SP3 上,利用 KubeKey 部署一套纯粹的 K8s 集群。
实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同)
主机名IPCPU内存系统盘数据盘用途ksp-master-1192.168.9.13181640100k8s-masterksp-master-2192.168.9.13281640100k8s-masterksp-master-3192.168.9.13381640100k8s-master合计32448120300
实战环境涉及软件版本信息


  • 操作系统:openEuler 22.03 LTS SP3 x64
  • K8s:v1.28.8
  • Containerd:1.7.13
  • KubeKey: v3.1.1
1. 操作系统基础配置

请注意,以下操作无特殊说明时需在全部服务器上实行。本文只选取 Master-1 节点作为演示,并假定其余服务器都已按照相同的方式进行配置和设置。
1.1 配置主机名
  1. hostnamectl hostname ksp-master-1
复制代码
1.2 配置 DNS
  1. echo "nameserver 114.114.114.114" > /etc/resolv.conf
复制代码
1.3 配置服务器时区


  • 配置服务器时区为 Asia/Shanghai
  1. timedatectl set-timezone Asia/Shanghai
复制代码
1.4 配置时间同步


  • 安装 chrony 作为时间同步软件
  1. yum install chrony
复制代码

  • 编辑配置文件 /etc/chrony.conf,修改 ntp 服务器配置
  1. vi /etc/chrony.conf
  2. # 删除所有的 pool 配置
  3. pool pool.ntp.org iburst
  4. # 增加国内的 ntp 服务器,或是指定其他常用的时间服务器
  5. pool cn.pool.ntp.org iburst
  6. # 上面的手工操作,也可以使用 sed 自动替换
  7. sed -i 's/^pool pool.*/pool cn.pool.ntp.org iburst/g' /etc/chrony.conf
复制代码

  • 重启并设置 chrony 服务开机自启动
  1. systemctl enable chronyd --now
复制代码

  • 验证 chrony 同步状态
  1. # 执行查看命令
  2. chronyc sourcestats -v
  3. # 正常的输出结果如下
  4. [root@ksp-master-1 ~]# chronyc sourcestats -v
  5.                              .- Number of sample points in measurement set.
  6.                             /    .- Number of residual runs with same sign.
  7.                            |    /    .- Length of measurement set (time).
  8.                            |   |    /      .- Est. clock freq error (ppm).
  9.                            |   |   |      /           .- Est. error in freq.
  10.                            |   |   |     |           /         .- Est. offset.
  11.                            |   |   |     |          |          |   On the -.
  12.                            |   |   |     |          |          |   samples. \
  13.                            |   |   |     |          |          |             |
  14. Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
  15. ==============================================================================
  16. 111.230.189.174            18  11   977     -0.693      6.795  -1201us  2207us
  17. electrode.felixc.at        18  10   917     +2.884      8.258    -31ms  2532us
  18. tick.ntp.infomaniak.ch     14   7   720     +2.538     23.906  +6176us  4711us
  19. time.cloudflare.com        18   7   913     +0.633      9.026  -2543us  3142us
复制代码
1.5 关闭系统防火墙
  1. systemctl stop firewalld && systemctl disable firewalld
复制代码
1.6 禁用 SELinux

openEuler 22.03 SP3 最小化安装的系统默认启用了 SELinux,为了减少麻烦,我们全部的节点都禁用 SELinux。
  1. # 使用 sed 修改配置文件,实现彻底的禁用
  2. sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  3. # 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
  4. setenforce 0
复制代码
1.7 安装系统依赖

在全部节点,实行下面的下令为 Kubernetes 安装系统根本依赖包。
  1. # 安装 Kubernetes 系统依赖包
  2. yum install curl socat conntrack ebtables ipset ipvsadm
  3. # 安装 tar 包,不装的话后面会报错。openEuler 也是个奇葩,迭代这么多版本了,默认居然还不安装 tar
  4. yum install tar
复制代码
2. 操作系统磁盘配置

服务器新增一块数据盘 /dev/sdb,用于 ContainerdK8s Pod 的持久化存储。
为了满足部分用户盼望在生产上线后,磁盘容量不足时可以实现动态扩容。本文接纳了 LVM 的方式配置磁盘(实际上,本人维护的生产环境,几乎不用 LVM)。
请注意,以下操作无特殊说明时需在集群全部节点上实行。本文只选取 Master-1 节点作为演示,并假定其余服务器都已按照相同的方式进行配置和设置。
2.1 使用 LVM 配置磁盘


  • 创建 PV
  1. pvcreate /dev/sdb
复制代码

  • 创建 VG
  1. vgcreate data /dev/sdb
复制代码

  • 创建 LV
  1. # 使用所有空间,VG 名字为 data,LV 名字为 lvdata
  2. lvcreate -l 100%VG data -n lvdata
复制代码
2.2 格式化磁盘
  1. mkfs.xfs /dev/mapper/data-lvdata
复制代码
2.3 磁盘挂载


  • 手工挂载
  1. mkdir /data
  2. mount /dev/mapper/data-lvdata /data/
复制代码

  • 开机主动挂载
  1. tail -1 /etc/mtab >> /etc/fstab
复制代码
2.4 创建数据目录


  • 创建 OpenEBS 本地数据根目录
  1. mkdir -p /data/openebs/local
复制代码

  • 创建 Containerd 数据目录
  1. mkdir -p /data/containerd
复制代码

  • 创建 Containerd 数据目录软连接
  1. ln -s /data/containerd /var/lib/containerd
复制代码
说明: KubeKey 到 v3.1.1 版为止,一直不支持在部署的时候更改 Containerd 的数据目录,只能用这种目录软链接到变通方式来增加存储空间(也可以提前手工安装 Containerd)。
3. 安装部署 K8s

3.1 下载 KubeKey

本文将 master-1 节点作为部署节点,把 KubeKey 最新版 (v3.1.1) 二进制文件下载到该服务器。具体 KubeKey 版本号可以在KubeKey release 页面查看。

  • 下载最新版的 KubeKey
  1. mkdir ~/kubekey
  2. cd ~/kubekey/
  3. # 选择中文区下载(访问 GitHub 受限时使用)
  4. export KKZONE=cn
  5. curl -sfL https://get-kk.kubesphere.io | sh -
复制代码

  • 正确的实行结果如下
  1. [root@ksp-master-1 ~]# mkdir ~/kubekey
  2. [root@ksp-master-1 ~]# cd ~/kubekey/
  3. [root@ksp-master-1 kubekey]# export KKZONE=cn
  4. [root@ksp-master-1 kubekey]# curl -sfL https://get-kk.kubesphere.io | sh -
  5. Downloading kubekey v3.1.1 from https://kubernetes.pek3b.qingstor.com/kubekey/releases/download/v3.1.1/kubekey-v3.1.1-linux-amd64.tar.gz ...
  6. Kubekey v3.1.1 Download Complete!
  7. [root@ksp-master-1 kubekey]# ll -h
  8. total 114M
  9. -rwxr-xr-x. 1 root root 79M Apr 16 12:30 kk
  10. -rw-r--r--. 1 root root 36M Apr 25 09:37 kubekey-v3.1.1-linux-amd64.tar.gz
复制代码

  • 查看 KubeKey 支持的 Kubernetes 版本列表 ./kk version --show-supported-k8s
  1. [root@ksp-master-1 kubekey]# ./kk version --show-supported-k8s
  2. v1.19.0
  3. ......(受限于篇幅,中间的不展示,请读者根据需求查看)
  4. v1.28.0
  5. v1.28.1
  6. v1.28.2
  7. v1.28.3
  8. v1.28.4
  9. v1.28.5
  10. v1.28.6
  11. v1.28.7
  12. v1.28.8
  13. v1.29.0
  14. v1.29.1
  15. v1.29.2
  16. v1.29.3
复制代码
说明: 输出结果为 KubeKey 支持的结果,但不代表 KubeSphere 和其他 K8s 也能完善支持。本文仅用 KubeKey 部署 K8s,所以不用特殊考虑版本的兼容性。
KubeKey 支持的 K8s 版本还是比较新的。本文选择 v1.28.8,生产环境可以选择 v1.26.15 或是其他次要版本是双数,补丁版本数凌驾 5 的版本。不发起选择太老的版本了,毕竟 v1.30 都已经发布了。
3.2 创建 K8s 集群部署配置文件


  • 创建集群配置文件
本文选择了 K8s v1.28.8。因此,指定配置文件名称为 k8s-v1288.yaml,如果不指定,默认的文件名为 config-sample.yaml
  1. ./kk create config -f k8s-v1288.yaml --with-kubernetes v1.28.8
复制代码
注意: 天生的默认配置文件内容较多,这里就不做过多展示了,更多详细的配置参数请参考 官方配置示例

  • 修改配置文件
本文示例接纳 3 个节点同时作为 control-plane、etcd 和 worker 节点。
编辑配置文件 k8s-v1288.yaml,重要修改 kind: Cluster 末节的相关配置
修改 kind: Cluster 末节中 hosts 和 roleGroups 等信息,修改说明如下。

  • hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口
  • roleGroups:指定 3 个 etcd、control-plane 节点,复用相同的呆板作为 3 个 worker 节点
  • internalLoadbalancer: 启用内置的 HAProxy 负载均衡器
  • domain:自界说域名 lb.opsxlab.cn,没特殊需求可使用默认值 lb.kubesphere.local
  • clusterName:自界说 opsxlab.cn,没特殊需求可使用默认值 cluster.local
  • autoRenewCerts:该参数可以实现证书到期主动续期,默以为 true
  • containerManager:使用 containerd
修改后的完整示例如下:
  1. apiVersion: kubekey.kubesphere.io/v1alpha2
  2. kind: Cluster
  3. metadata:
  4.   name: sample
  5. spec:
  6.   hosts:
  7.   - {name: ksp-master-1, address: 192.168.9.131, internalAddress: 192.168.9.131, user: root, password: "OpsXlab@2024"}
  8.   - {name: ksp-master-2, address: 192.168.9.132, internalAddress: 192.168.9.132, user: root, password: "OpsXlab@2024"}
  9.   - {name: ksp-master-3, address: 192.168.9.133, internalAddress: 192.168.9.133, user: root, password: "OpsXlab@2024"}
  10.   roleGroups:
  11.     etcd:
  12.     - ksp-master-1
  13.     - ksp-master-2
  14.     - ksp-master-3
  15.     control-plane:
  16.     - ksp-master-1
  17.     - ksp-master-2
  18.     - ksp-master-3
  19.     worker:
  20.     - ksp-master-1
  21.     - ksp-master-2
  22.     - ksp-master-3
  23.   controlPlaneEndpoint:
  24.     ## Internal loadbalancer for apiservers
  25.     internalLoadbalancer: haproxy
  26.     domain: lb.opsxlab.cn
  27.     address: ""
  28.     port: 6443
  29.   kubernetes:
  30.     version: v1.28.8
  31.     clusterName: opsxlab.cn
  32.     autoRenewCerts: true
  33.     containerManager: containerd
  34.   etcd:
  35.     type: kubekey
  36.   network:
  37.     plugin: calico
  38.     kubePodsCIDR: 10.233.64.0/18
  39.     kubeServiceCIDR: 10.233.0.0/18
  40.     ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
  41.     multusCNI:
  42.       enabled: false
  43.   registry:
  44.     privateRegistry: ""
  45.     namespaceOverride: ""
  46.     registryMirrors: []
  47.     insecureRegistries: []
  48.   addons: []
复制代码
3.3 部署 K8s

接下来我们实行下面的下令,使用上面天生的配置文件部署 K8s。
  1. export KKZONE=cn
  2. ./kk create cluster -f k8s-v1288.yaml
复制代码
上面的下令实行后,起首 KubeKey 会检查部署 K8s 的依赖及其他详细要求。通过检查后,系统将提示您确认安装。输入 yes 并按 ENTER 继续部署。
  1. [root@ksp-master-1 kubekey]# ./kk create cluster -f k8s-v1288.yaml
  2. _   __      _          _   __
  3. | | / /     | |        | | / /
  4. | |/ / _   _| |__   ___| |/ /  ___ _   _
  5. |    \| | | | '_ \ / _ \    \ / _ \ | | |
  6. | |\  \ |_| | |_) |  __/ |\  \  __/ |_| |
  7. \_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
  8.                                     __/ |
  9.                                    |___/
  10. 10:45:28 CST [GreetingsModule] Greetings
  11. 10:45:28 CST message: [ksp-master-3]
  12. Greetings, KubeKey!
  13. 10:45:28 CST message: [ksp-master-1]
  14. Greetings, KubeKey!
  15. 10:45:28 CST message: [ksp-master-2]
  16. Greetings, KubeKey!
  17. 10:45:28 CST success: [ksp-master-3]
  18. 10:45:28 CST success: [ksp-master-1]
  19. 10:45:28 CST success: [ksp-master-2]
  20. 10:45:28 CST [NodePreCheckModule] A pre-check on nodes
  21. 10:45:31 CST success: [ksp-master-3]
  22. 10:45:31 CST success: [ksp-master-1]
  23. 10:45:31 CST success: [ksp-master-2]
  24. 10:45:31 CST [ConfirmModule] Display confirmation form
  25. +--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
  26. | name         | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time         |
  27. +--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
  28. | ksp-master-1 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 10:45:31 |
  29. | ksp-master-2 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 10:45:31 |
  30. | ksp-master-3 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 10:45:31 |
  31. +--------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
  32. This is a simple check of your environment.
  33. Before installation, ensure that your machines meet all requirements specified at
  34. https://github.com/kubesphere/kubekey#requirements-and-recommendations
  35. Continue this installation? [yes/no]:
复制代码
注意:

  • nfs client、ceph client、glusterfs client 3 个与存储有关的 client 显示没有安装,这个我们后期会在对接存储的实战中单独安装。
  • docker、containerd 会根据配置文件选择的 containerManager 范例主动安装。
部署完成需要约莫 10-20 分钟左右,具体看网速和呆板配置,本次部署完成耗时 20 分钟。
部署完成后,您应该会在终端上看到类似于下面的输出。
  1. 10:59:25 CST [ConfigureKubernetesModule] Configure kubernetes
  2. 10:59:25 CST success: [ksp-master-1]
  3. 10:59:25 CST skipped: [ksp-master-2]
  4. 10:59:25 CST skipped: [ksp-master-3]
  5. 10:59:25 CST [ChownModule] Chown user $HOME/.kube dir
  6. 10:59:26 CST success: [ksp-master-3]
  7. 10:59:26 CST success: [ksp-master-2]
  8. 10:59:26 CST success: [ksp-master-1]
  9. 10:59:26 CST [AutoRenewCertsModule] Generate k8s certs renew script
  10. 10:59:27 CST success: [ksp-master-2]
  11. 10:59:27 CST success: [ksp-master-3]
  12. 10:59:27 CST success: [ksp-master-1]
  13. 10:59:27 CST [AutoRenewCertsModule] Generate k8s certs renew service
  14. 10:59:28 CST success: [ksp-master-3]
  15. 10:59:28 CST success: [ksp-master-2]
  16. 10:59:28 CST success: [ksp-master-1]
  17. 10:59:28 CST [AutoRenewCertsModule] Generate k8s certs renew timer
  18. 10:59:29 CST success: [ksp-master-2]
  19. 10:59:29 CST success: [ksp-master-3]
  20. 10:59:29 CST success: [ksp-master-1]
  21. 10:59:29 CST [AutoRenewCertsModule] Enable k8s certs renew service
  22. 10:59:29 CST success: [ksp-master-3]
  23. 10:59:29 CST success: [ksp-master-2]
  24. 10:59:29 CST success: [ksp-master-1]
  25. 10:59:29 CST [SaveKubeConfigModule] Save kube config as a configmap
  26. 10:59:29 CST success: [LocalHost]
  27. 10:59:29 CST [AddonsModule] Install addons
  28. 10:59:29 CST success: [LocalHost]
  29. 10:59:29 CST Pipeline[CreateClusterPipeline] execute successfully
  30. Installation is complete.
  31. Please check the result using the command:
  32.         kubectl get pod -A
复制代码
4. 验证 K8s 集群

4.1 kubectl 下令行验证集群状态

本末节只是简单的看了一下根本状态,并不全面,更多的细节各人自己体验探索吧。

  • 查看集群节点信息
在 master-1 节点运行 kubectl 下令获取 K8s 集群上的可用节点列表。
  1. kubectl get nodes -o wide
复制代码
在输出结果中可以看到,当前的 K8s 集群有三个可用节点、节点的内部 IP、节点脚色、节点的 K8s 版本号、容器运行时及版本号、操作系统范例及内核版本等信息。
  1. [root@ksp-master-1 kubekey]# kubectl get nodes -o wide
  2. NAME           STATUS   ROLES                  AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION                       CONTAINER-RUNTIME
  3. ksp-master-1   Ready    control-plane,worker   9m43s   v1.28.8   192.168.9.131   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
  4. ksp-master-2   Ready    control-plane,worker   8m8s    v1.28.8   192.168.9.132   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
  5. ksp-master-3   Ready    control-plane,worker   8m9s    v1.28.8   192.168.9.133   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
复制代码

  • 查看 Pod 列表
输入以下下令获取在 K8s 集群上运行的 Pod 列表。
  1. kubectl get pods -o wide -A
复制代码
在输出结果中可以看到, 全部 pod 都在运行。
  1. [root@ksp-master-1 kubekey]# kubectl get pod -A -o wide
  2. NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP              NODE        
  3. kube-system   calico-kube-controllers-64f6cb8db5-fsgnq   1/1     Running   0          4m59s   10.233.84.2     ksp-master-1           
  4. kube-system   calico-node-5hkm4                          1/1     Running   0          4m59s   192.168.9.133   ksp-master-3         
  5. kube-system   calico-node-wqz9s                          1/1     Running   0          4m59s   192.168.9.132   ksp-master-2
  6. kube-system   calico-node-zzr5n                          1/1     Running   0          4m59s   192.168.9.131   ksp-master-1
  7. kube-system   coredns-76dd97cd74-66k8z                   1/1     Running   0          6m22s   10.233.84.1     ksp-master-1
  8. kube-system   coredns-76dd97cd74-94kvl                   1/1     Running   0          6m22s   10.233.84.3     ksp-master-1
  9. kube-system   kube-apiserver-ksp-master-1                1/1     Running   0          6m39s   192.168.9.131   ksp-master-1
  10. kube-system   kube-apiserver-ksp-master-2                1/1     Running   0          4m52s   192.168.9.132   ksp-master-2
  11. kube-system   kube-apiserver-ksp-master-3                1/1     Running   0          5m9s    192.168.9.133   ksp-master-3
  12. kube-system   kube-controller-manager-ksp-master-1       1/1     Running   0          6m39s   192.168.9.131   ksp-master-1
  13. kube-system   kube-controller-manager-ksp-master-2       1/1     Running   0          4m58s   192.168.9.132   ksp-master-2
  14. kube-system   kube-controller-manager-ksp-master-3       1/1     Running   0          5m5s    192.168.9.133   ksp-master-3
  15. kube-system   kube-proxy-2xpq4                           1/1     Running   0          5m3s    192.168.9.131   ksp-master-1
  16. kube-system   kube-proxy-9frmd                           1/1     Running   0          5m3s    192.168.9.133   ksp-master-3
  17. kube-system   kube-proxy-bhg2k                           1/1     Running   0          5m3s    192.168.9.132   ksp-master-2
  18. kube-system   kube-scheduler-ksp-master-1                1/1     Running   0          6m39s   192.168.9.131   ksp-master-1
  19. kube-system   kube-scheduler-ksp-master-2                1/1     Running   0          4m59s   192.168.9.132   ksp-master-2
  20. kube-system   kube-scheduler-ksp-master-3                1/1     Running   0          5m5s    192.168.9.133   ksp-master-3
  21. kube-system   nodelocaldns-gl6dc                         1/1     Running   0          6m22s   192.168.9.131   ksp-master-1
  22. kube-system   nodelocaldns-q45jf                         1/1     Running   0          5m9s    192.168.9.133   ksp-master-3
  23. kube-system   nodelocaldns-rskk5                         1/1     Running   0          5m8s    192.168.9.132   ksp-master-2
复制代码

  • 查看 Image 列表
输入以下下令获取在 K8s 集群节点上已经下载的 Image 列表。
  1. [root@ksp-master-1 kubekey]# crictl images ls
  2. IMAGE                                                                   TAG                 IMAGE ID            SIZE
  3. registry.cn-beijing.aliyuncs.com/kubesphereio/cni                       v3.27.3             6527a35581401       88.4MB
  4. registry.cn-beijing.aliyuncs.com/kubesphereio/coredns                   1.9.3               5185b96f0becf       14.8MB
  5. registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache        1.22.20             ff71cd4ea5ae5       30.5MB
  6. registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver            v1.28.8             e70a71eaa5605       34.7MB
  7. registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager   v1.28.8             e5ae3e4dc6566       33.5MB
  8. registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers          v3.27.3             3e4fd05c0c1c0       33.4MB
  9. registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy                v1.28.8             5ce97277076c6       28.1MB
  10. registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler            v1.28.8             ad3260645145d       18.7MB
  11. registry.cn-beijing.aliyuncs.com/kubesphereio/node                      v3.27.3             5c6ffd2b2a1d0       116MB
  12. registry.cn-beijing.aliyuncs.com/kubesphereio/pause                     3.9                 e6f1816883972       321kB
复制代码
至此,我们已经完成了部署 3 台 Master 节点 和 Worker 节点复用的最小化 K8s 集群。
接下来我们将在 K8s 集群上部署一个简单的 Nginx Web 服务器,测试验证 K8s 集群是否正常。
5. 部署测试资源

本示例使用下令行工具在 K8s 集群上部署一个 Nginx Web 服务器。
5.1 创建 Nginx Deployment

运行以下下令创建一个部署 Nginx Web 服务器的 Deployment。此示例中,我们将创建具有两个副本基于 nginx:alpine 镜像的 Pod。
  1. kubectl create deployment nginx --image=nginx:alpine --replicas=2
复制代码
5.2 创建 Nginx Service

创建一个新的 K8s 服务,服务名称 nginx,服务范例 Nodeport,对外的服务端口 80。
  1. kubectl create service nodeport nginx --tcp=80:80
复制代码
5.3 验证 Nginx Deployment 和 Pod


  • 运行以下下令查看创建的 Deployment 和 Pod 资源。
  1. kubectl get deployment -o wide
  2. kubectl get pods -o wide
复制代码

  • 查看结果如下:
  1. [root@ksp-master-1 kubekey]# kubectl get deployment -o wide
  2. NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
  3. nginx   2/2     2            2           20s   nginx        nginx:alpine   app=nginx
  4. [root@ksp-master-1 kubekey]# kubectl get pods -o wide
  5. NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
  6. nginx-6c557cc74d-tbw9c   1/1     Running   0          23s   10.233.102.187   ksp-master-2   <none>           <none>
  7. nginx-6c557cc74d-xzzss   1/1     Running   0          23s   10.233.103.148   ksp-master-1   <none>           <none>
复制代码
5.4 验证 Nginx Service

运行以下下令查看可用的服务列表,在列表中我们可以看到 nginx 服务范例 为 Nodeport,并在 Kubernetes 主机上开放了 30619 端口。
  1. kubectl get svc -o wide
复制代码
查看结果如下:
  1. [root@ksp-master-1 kubekey]# kubectl get svc -o wide
  2. NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE     SELECTOR
  3. kubernetes   ClusterIP   10.233.0.1     <none>        443/TCP        4d22h   <none>
  4. nginx        NodePort    10.233.14.48   <none>        80:30619/TCP   5s      app=nginx
复制代码
5.5 验证服务

运行以下下令访问部署的 Nginx 服务,验证服务是否成功部署。

  • 验证直接访问 Pod
  1. curl 10.233.102.187
  2. # 访问结果如下
  3. [root@ks-master-1 ~]# curl 10.233.102.187
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <title>Welcome to nginx!</title>
  8. </head>
  9. <body>
  10. <h1>Welcome to nginx!</h1>
  11. <p>If you see this page, the nginx web server is successfully installed and
  12. working. Further configuration is required.</p>
  13. <p>For online documentation and support please refer to
  14. <a target="_blank" href="http://nginx.org/">nginx.org</a>.<br/>
  15. Commercial support is available at
  16. <a target="_blank" href="http://nginx.com/">nginx.com</a>.</p>
  17. <p><em>Thank you for using nginx.</em></p>
  18. </body>
  19. </html>
复制代码

  • 验证访问 Service
  1. curl 10.233.14.48
  2. # 访问结果同上,略
复制代码

  • 验证访问 Nodeport
  1. curl 192.168.9.131:30619
  2. # 访问结果同上,略
复制代码
6. 主动化 Shell 脚本

文章中全部操作步调,已全部编排为主动化脚本,因篇幅限制,不在此文档中展示。
7. 总结

本文分享了在 openEuler 22.03 LTS SP3 操作系统上,如何利用 KubeSphere 开发的工具 KubeKey,部署 K8s v1.28.8 集群的详细流程及注意事项。
重要内容概括如下:

  • openEuler 22.03 LTS SP3 操作系统基础配置
  • openEuler 22.03 LTS SP3 操作系统上 LVM 磁盘的创建配置
  • 使用 KubeKey 部署 K8s 高可用集群
  • K8s 集群部署完成后的验证测试
免责声明:


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

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

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表