1.部署须知
1.1.部署说明
执行本部署操作文档,请用户知悉如下内容后再操作:
- 仅限用于部署麒麟容器云底座,部署前请准备好相应的物料;
- 部署前请提前准备好集群LICENSE,用于激活容器云底座(可使用临时版用于测试);
1.2.配置需求
1.2.1.软件说明
本文档中使用部署物料中,主要涉及软件版本信息汇总如下。
序号 | 名称 | 版本信息 | 备注 | |
master节点 | node节点 | |||
| OS | 麒麟云原生操作系统V10 SP1/SP2/SP3 | 麒麟云原生操作系统V10 SP1/SP2/SP3 | |
| 内核 | 4.19.90-25.17及以上 | 4.19.90-25.17及以上 | |
| 麒麟容器云 | v3.3 | v3.3 | |
| Kubernetes | v1.24.13 | v1.24.13 | |
| Containerd | 1.6.20 | 1.6.20 |
1.2.2.硬件说明
部署麒麟容器云底座需要两种类型节点服务器,分别为master和node节点,均支持虚拟机和物理服务器,支持两类节点复用。部署集群所需服务器的最低配置信息汇总如下,节点复用时以node节点配置为准。
序号 | 名称 | 配置信息 | 备注 | |
master节点 | node节点 | |||
1. | CPU | 8核 | 16核 | |
2. | 内存 | 16G | 32G | |
3. | 网卡 | 万兆网卡 | 万兆网卡 | |
4. | 硬盘 | 500G SSD*2 | 500G SSD*2 | 建议双盘做raid |
1.2.3.集群规模
本部署文档支持以下集群规模的场景,部署前请根据容器云的集群规模选择合适的场景。
序号 | 节点数量 | 节点类型 | 是否推荐 | 备注 | |
master节点 | node节点 | ||||
1. | 1 | 1 | 0 | 是 | 节点复用 |
2. | 2 | 1 | 1 | 是 | |
3. | 2 | 0 | 是 | 节点复用 | |
4. | 3 | 1 | 2 | 是 | |
5. | 3 | 0 | 是 | 节点复用 | |
6. | N(>3) | 1 | N-1 | 否 | |
7. | 3 | N-3 | 是 |
1.2.4.网络规划
执行本部署操作前,请提前规划好集群的以下网络,切避免与已有网络冲突。
序号 | 网络类型 | 网络信息 | 备注 | |
是否需要规划 | 默认值 | |||
1. | 管理网络 | 是 | 无 | 勿与pod和svc网冲突 |
2. | pod网络 | 否 | 10.119.0.0/22 | 勿与管理网和svc网冲突 |
3. | svc网络 | 否 | 10.77.0.0/22 | 勿与管理网和pod网冲突 |
注意:要求所有节点之间放行pod网络和svc网络(集群内部使用),避免部署失败。
2.前置准备
集群所有节点安装完操作系统后,请确认完成以下操作步骤。
2.1.设置主机名
所有mater节点和node节点,设置好主机名,操作示例如下。
# 设置主机名,方法如下。 # 建议master节点设置master<数字>格式,node节点设置为node<数字>的格式 #命令行:hostnamectl set-hostname 【主机名】 # 将所有hostname信息更新至所有节点的/etc/hosts文件中,如 $ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.20.41.202 master1 172.20.41.203 master2 172.20.41.204 master3 |
2.2.配置主机免密
部署前,建议将master1节点同所有的mater节点和node节点做好root用户免密,避免部署失败,操作示例如下。
# 在master1节点执行命令行:ssh-copy-id root@<主机名> ,主机名替换为所有节点hostname $cd /root/.ssh $ssh-keygen -t rsa #执行该命令需要输入信息时直接按回车跳过 $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@master1 #每个节点都要发送一份(包含master1节点) ... $ ssh-copy-id ~/.ssh/id_rsa_pub root@<node-name> # 执行完成后检测各节点免密是否配置成功 |
2.3.配置管理网
部署前,请配置好所有节点物理网卡的管理网络地址,保证二层网络互通。以master1节点,配置网卡ens3网卡的管理网络172.20.41.1/22为例,操作命令如下(已配置主机管理网络则不需要操作)。
# 更新网络的配置文件/etc/sysconfig/network-scripts/ifcfg-ens3 # cat /etc/sysconfig/network-scripts/ifcfg-ens3 BOOTPROTO=static DEVICE=ens3 HWADDR=52:54:00:4b:1b:85 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no IPADDR=172.20.41.203 PREFIX=22 GATEWAY=172.20.43.253 DNS1=172.20.191.2 DNS2=144.144.144.144 |
2.4.部署物料
本部署文档所涉及部署物料汇总如下,
序号 | 物料名称 | 物料说明 |
| Kylin-CloudNativePLAT-{版本}-{发布时间}-{架构}.iso | 容器云ISO文件 |
| Kylin-CloudNativePLAT-{版本}-{发布时间}-{架构}.iso | 容器云ISO校验文件 |
| KylinCloud-Kine-{架构}-{发布时间}.iso | Kine组件iso文件(两节点) |
| KylinCloud-Kine-{架构}-{发布时间}.iso.md5sum | Kine组件iso校验文件(两节点) |
| KYLINCLOUDLICENSE | 激活LICENSE证书(前场需申请) |
本文以云底座Kylin-CloudNativePLAT-v3.3.0-alpha7-2305-ARM64.iso 和Kine组件KylinCloud-Kine-amd64-2310301209.iso为例。
3.部署集群
3.1.挂载镜像
挂载目录自定义,本文以`/mnt`为例
# 下载ISO及校验文件后,需要进行sha256sum校验 [root@wqw1 ~]# cat Kylin-CloudNativePLAT-v3.3.0-alpha7-2305-ARM64.iso.sha256sum | sha256sum --check Kylin-CloudNativePLAT-v3.3.0-alpha7-2305-ARM64.iso: 成功 [root@wqw1 ~]# mkdir -p /mnt/k8s [root@wqw1 ~]# mount Kylin-CloudNativePLAT-v3.3.0-alpha7-2305-ARM64.iso /mnt/k8s mount: /mnt: WARNING: source write-protected, mounted read-only. |
3.2.安装部署程序
安装kcctl部署工具,执行如下操作。
[root@wqw1 ~]# cd /mnt/k8s [root@wqw1 k8s]# install -m 755 kcctl /usr/local/bin/ # 没有install命令可以换成: [root@wqw1 k8s]# cp kcctl /usr/local/bin/ && chmod 755 /usr/local/bin/kcct |
3.3.导入镜像
导入集群部署的镜像,操作命令如下。
[root@wqw1 k8s]# kcctl load -i images.tar 2023-05-04 17:05:40 [INFO] [default_image_file.go:115] load image 【镜像名】 successfully |
更新containerd.sh部署脚本,操作命令如下。
[root@wqw1 k8s]# find /var/lib/containers/storage/overlay/ -name "containerd.sh" /var/lib/containers/storage/overlay/cf47bf278b9124b1d2865c91023a39df7f0696ca0d08e5354904c0e1795c7f36/diff/scripts/containerd.sh # 修改查询到的containerd.sh脚本文件中function copy_bins部分cp bin命令后添加如下内容: [root@wqw1 k8s]# vim /var/lib/containers/storage/overlay/cf47bf278b9124b1d2865c91023a39df7f0696ca0d08e5354904c0e1795c7f36/diff/scripts/containerd.sh # 将内容为cp "${scripts_path}"/../bin/* /usr/local/bin的行后修改为 “install -m 755 "${scripts_path}"/../bin/* /usr/local/bin”,允许拷贝二进制文件时文件存在 |
修改containerd.sh部署脚本内容后,如下图所示。
3.4.部署kine物料
在两个master节点的场景下,需要完成如下操作。对于单个master和多个master的场景,跳过此步骤。
在master1节点解压kine物料, 这里以amd64架构为例。
# 在master1节点执行 $ mkdir -p /mnt/kine $ mount KylinCloud-Kine-amd64-2310301209.iso /mnt/kine $ cd /mnt/kine $ tar -xf kine.tar.gz -C /root # 初始化containerd, 并检查containerd服务启动成功 $ cd /root/kine/kine-pre && umount /mnt/kine $ bash containerd.sh master $ systemctl status containerd ## 进入初始化kine-images目录,本地导入镜像 # 将初始化物料上传至master2节点 $ cd /root $ scp -r kine root@master2:/root/ |
在master2节点完成如下操作。
## 在master2节点操作 $ cd /root/kine/kine-pre # 初始化containerd, 并检查containerd服务启动成功 $ bash containerd.sh backup $ systemctl status containerd ## 进入初始化kine-images目录,本地导入镜像 ## 进入初始化kine部署目录 # 执行kine部署 ## 任意master节点执行,检查mariadb+maxscale所有服务启动正常 $ nerdctl exec -ti kine-maxscale maxctrl list servers |
3.5.修改集群编排文件
将Clusterfile拷贝到master1节点任意目录进行修改,这里以root目录为例
[root@wqw1 k8s]# cd /mnt/k8s [root@wqw1 k8s]# install -m 755 Clusterfile /root # 没有install命令可以换成: [root@wqw1 k8s]# cp Clusterfile /root && chmod 755 /root/Clusterfile [root@wqw1 k8s]# cd /root [root@wqw1 ~]# vim Clusterfile |
无特殊情况下只需要修改以下内容:
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3.0-1.24.13 # 确认是否为导入镜像时输出的镜像名,若不是,则需要修改 ssh: passwd: kylincloud@123. # 所有机器统一的密码,如需单独配置,见后文 hosts: - ips: [ 172.20.41.202 ] # 配置为master ip列表 roles: [ master ] - ips: [ 172.20.41.203,172.20.41.204 ] # 配置为node ip列表,逗号分隔 roles: [ node ] |
单节点部署需要配置clusterfile移除master的污点,见 后文 【示例:单节点部署】
3.5.1.环境变量
支持使用如下环境变量进行定制化修改:
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3.0-1.24.13 # 确认是否为导入镜像时输出的镜像名,若不是,则需要修改 env: - CONTAINERDATA=/var/lib/containerd - CONTAINERSTATE=/run/containerd - PODSUBNET=10.119.0.0/22 - SVCSUBNET=10.77.0.0/22 - Domain=kylincloud.org # 注意这里不要带www,只写两段即可 ssh: passwd: kylincloud@123. # 所有机器统一的密码,如需单独配置,见后文 hosts: - ips: [ 172.20.41.202 ] # 配置为master ip列表 roles: [ master ] - ips: [ 172.20.41.203,172.20.41.204 ] # 配置为node ip列表,逗号分隔 roles: [ node ] |
附:Clusterfile-增加环境变量解释如下:
- CONTAINERDATA conatinerd数据存储目录(请不要修改)
- CONTAINERSTATE containerd 运行数据存储目录
- PODSUBNET pod子网段
- SVCSUBNET svc子网段
- Domain 前端根域名,默认为 www.kylincloud.org
以上变量均为可选变量,只需要在env下追加需要修改的变量即可
3.5.2.单独配置节点ssh
支持单独为一个或多个节点配置ssh密码与ssh port,默认为22端口
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3.0-1.24.13 # 确认是否为导入镜像时输出的镜像名,若不是,则需要修改 ssh: passwd: kylincloud@123. # 所有机器统一的密码 hosts: - ips: [ 172.20.41.202 ] # 配置为master ip列表 roles: [ master ] - ips: [ 172.20.41.204 ] # 配置为node ip列表,逗号分隔 roles: [ node ] ssh: pk: /root/.ssh/id_rsa # 可以配置要使用的秘钥 passwd: yyy # 单独配204的ssh密码 port: "22" # 单独配204的ssh端口 - ips: [ 172.20.41.203 ] # 配置为node ip列表,逗号分隔 roles: [ node ] |
3.5.3.污点|标签
若允许master节点被调度则删除污点,若不允许node节点被调度则增加污点。分别给master和node节点添加污点|标签的示例如下:
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3-1.24.13 ssh: passwd: kylincloud@123. hosts: - ips: [ 172.20.41.202,172.20.41.203 ] roles: [ master ] - ips: [ 172.20.41.204 ] # 可以单独对一个节点配置也可以对多个节点配置 roles: [ master ] label: zones: zone1 # 可以以key: value形式增加节点标签 taints: - node-role.kubernetes.io/control-plane- # 使用taints的列表操作污点,-代表删除该污点(允许该节点调度) - node-role.kubernetes.io/master- # 与control-plane-搭配使用可以让pod往master调度(允许该节点调度) - ips: [ 172.20.41.205,172.20.41.206 ] roles: [ node ] - ips: [ 172.20.41.207 ] roles: [ node ] taints: - key1=value1:NoSchedule # 给207增加noschedule的污点(不允许该节点调度) |
上述示例中,将部署 202-204三控制、205-207三计算的集群,其中204移除了两个控制节点的污点,使其能够接收pod调度与负载,并且打上了zones: zone1的标签,207增加了 "若pod存在标签key1=value1则不可调度" 的污点。
需要注意:去除控制节点污点(node-role.kubernetes.io/control-plane-与node-role.kubernetes.io/master-)后,控制节点承受pod调度与负载,也成为了工作节点,属于license计算的工作节点范围内 |
3.5.4.替换etcd集群
在两个master节点的场景下,需要完成如下操作用于替换etcd集群。单个master和多个master的场景下,跳过此步骤。
# 在Clusterfile文件中添加如下内容,用于部署集群时使用此etcd集群,etcd的地址需要替换为实际的master和backup地址。 --- apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration apiServer: extraArgs: etcd-servers: https://172.20.41.202:2379,https://172.20.41.203:2379 etcd: local: extraArgs: listen-metrics-urls: http://0.0.0.0:2381 advertise-client-urls: https://127.0.0.1:12379 listen-client-urls: https://127.0.0.1:12379 --- apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration skipPhases: - control-plane-join/etcd |
3.5.5.示例:单节点部署
单节点部署需去除master节点污点并承担工作节点的功能,完成与node节点复用目的。
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3-1.24.13 ssh: passwd: kylincloud@123. hosts: - ips: [ 172.20.41.204 ] # 只写master角色 roles: [ master ] taints: - node-role.kubernetes.io/control-plane- # 使用taints的列表操作污点,-代表删除该污点 - node-role.kubernetes.io/master- # 与control-plane-搭配使用可以让pod往master调度 |
3.5.6.示例:两节点部署
两master节点部署需要去除master节点污点并承担工作节点功能,完成复用目的。
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3-1.24.13 ssh: passwd: kylincloud@123. hosts: - ips: [ 172.20.41.202,172.20.41.203 ] # 只写master角色 roles: [ master ] taints: - node-role.kubernetes.io/control-plane- # 使用taints的列表操作污点,-代表删除该污点 - node-role.kubernetes.io/master- # 与control-plane-搭配使用可以让pod往master调度 # 注意保留分隔符"---" --- apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration apiServer: extraArgs: etcd-servers: https://172.20.41.202:2379,https://172.20.41.203:2379 etcd: local: extraArgs: listen-metrics-urls: http://0.0.0.0:2381 advertise-client-urls: https://127.0.0.1:12379 listen-client-urls: https://127.0.0.1:12379 # 注意保留分隔符"---" --- apiVersion: kubeadm.k8s.io/v1beta3 kind: JoinConfiguration skipPhases: - control-plane-join/etcd |
3.5.7.示例:三节点部署
3master节点部署需要去除控制节点污点,是master承担工作节点的功能,完成复用目的。
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3-1.24.13 ssh: passwd: kylincloud@123. hosts: - ips: [ 172.20.41.204,172.20.41.205,172.20.41.206 ] # 只写master角色 roles: [ master ] taints: - node-role.kubernetes.io/control-plane- # 使用taints的列表操作污点,-代表删除该污点 - node-role.kubernetes.io/master- # 与control-plane-搭配使用可以让pod往master调度 |
3.5.8.示例:多节点部署
以3master和3node节点部署为例,所有master不允许调度,node允许调度,配置示例如下。
apiVersion: kylincloud.org/v2 kind: Cluster metadata: name: default-kylincloud-cluster spec: image: registry.kylincloud.org/kcc/kcc/arm64:v3.3-1.24.13 ssh: passwd: kylincloud@123. hosts: - ips: [ 172.20.41.202,172.20.41.203,172.20.41.204 ] # 只写master角色 roles: [ master ] - ips: [ 172.20.41.205,172.20.41.206,172.20.41.207 ] # 只写node角色 roles: [ node ] |
3.6.部署集群
[root@wqw1 ~]# kcctl run -f Clusterfile -l KYLINCLOUDLICENSE # 需要通过-l或--license传入证书 2023-05-04 17:05:42 [INFO] [local.go:293] Start to create a new cluster: master [172.20.41.201], worker [172.20.41.202,172.20.41.203] ...过程省略 2023-05-04 17:07:45 [INFO] [local.go:303] Succeeded in creating a new cluster, begin to upload kylincloud license. # 完成部署,开始上传证书 ... # 部署完成 2023-05-04 17:08:46 [INFO] [local.go:310] Succeeded in uploading your licnese, enjoy kylincloud! |
上传过程中遇到如下报错为正常情况,是由于磁盘性能不够导致的license服务没快速启动导致
Error from server (InternalError): error when creating "/var/lib/kylincloud/data/default-kylincloud-cluster/license.yaml": Internal error occurred: failed calling webhook "mlicense.kylincloud.io": failed to call webhook: Post "https://kcc-license-webhook-service.kylin-system.svc:443/mutate-license-kylincloud-io-v1alpha1-license?timeout=10s": no endpoints available for service "kcc-license-webhook-service" 2023-06-26 17:27:17 [INFO] [license.go:112] License svc not ready: rerun in 5s... |
麒麟容器云部署工具会持续重试2分钟,若2分钟后仍失败则退出,但不代表部署失败,可待服务完全启动后(kubectl get po -n kylin-system查到全部Running),手动apply证书文件到集群即可
[root@wqw1 ~]# kubectl get po -n kylin-system #所有pods为Running则服务启动完成 # 此文件路径在报错中有表述,当此文件不存在时,手动创建并填入LICENSE内容信息 [root@wqw1 ~]# cat /var/lib/kylincloud/data/default-kylincloud-cluster/license.yaml --- apiVersion: license.kylincloud.io/v1alpha1 kind: License metadata: labels: app.kubernetes.io/name: license app.kubernetes.io/instance: license app.kubernetes.io/part-of: kcc-license name: license spec: license: |- <LICENSE文本内容> [root@wqw1 ~]# kubectl apply -f /var/lib/kylincloud/data/default-kylincloud-cluster/license.yaml |
3.7.常见问题处理
- 安装时出现chronyd服务启动失败问题
当sp1系统做双节点部署时会遇到如下问题
这是因chronyd二进制文件没有复制到/usr/local/bin导致,需要手动将二进制放到该目录下
[root@wqw1 mnt]# find /var/lib/containers/storage/overlay/ -name "chronyd" [root@wqw1 mnt]# cp /var/lib/containers/storage/overlay/5b74d32a1dfc76ee19c21c0feb8d3421175f3ff98f7289759a2307e460b9739c/diff/bin/chronyd /usr/local/bin/ [root@wqw1 mnt]#systemctl restart chronyd # 执行完后将两个节点的/root/.bashrc文件中source部分的命令删除后重新执行安装k8s集群的命令即可如后续过程还出现图上问题,重复执行安装命令 |
- 重复安装时出现端口占用和文件存在的问题
当做集群重复部署时会遇到如下问题
这是因重复部署集群时,kube-apiserver等核心组件服务已经启动并导致端口已监听,需清理配置文件并kill进程再继续部署。操作步骤如下
[root@wqw1 mnt]# cd /etc/kubernetes/manifests/ [root@wqw1 mnt]# rm -rf etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml [root@wqw1 mnt]# rm -rf /var/lib/etcd [root@wqw1 mnt]# systemctl stop kubelet [root@wqw1 mnt]# netstat -lantp |egrep "10250|10259|10257|2380" [root@wqw1 mnt]# kill -9 <pid进程号> # 执行完后将两个节点的/root/.bashrc文件中source部分的命令删除后重新执行安装k8s集群的命令即可如后续过程还出现图上问题,重复执行安装命令 |
3.8.部署集群后操作
在两个master节点的场景下,需要完成如下操作。单个master和多个master场景下,跳过此步骤。
# 两个master节点场景下,移除/etc/kubernetes/manifests/etcd.yaml文件 [root@wqw1 ~]# mv /etc/kubernetes/manifests/etcd.yaml /root |
3.9.检测集群
部署集群完成后,需检测集群内容所有nodes和pods均运行正常。
[root@wqw1 ~]# kubectl get nodes -A -o wide [root@wqw1 ~]# kubectl get pods -A -o wide # 部署后发现kcan-ui服务不能正常启动,建议集群所有节点重启机器,重启后再次观察该服务是否正常运行 |
3.10.访问集群
在实际使用过程中,麒麟容器云提供https/http协议的访问入口,分为域名访问及ip+端口访问两种方式:
- 域名访问
- 如您有自己的dns服务器,可配置集群任意节点ip与域名www.kylincloud.org到dns中,若无,可配置/etc/hosts本地解析:
[root@wqw1 ~]# vim /etc/hosts 172.20.41.202 www.kylincloud.org # 配置集群任意节点IP至域名www.kylincloud.org |
注意:这里的域名 kylincloud.org 可被部署时变量 .Domain 覆写(见【修改集群编排文件 - 环境变量】),若定义了此变量,则域名为 www.{{ .Domain }}
- 访问域名
- https://www.kylincloud.org:30000
- http://www.kylincloud.org:30000
- IP+端口访问
- 可以使用集群的任意节点IP + 30000端口访问
- 访问IP+端口
- https://172.20.41.202:30000
- http://172.20.41.202:30000
4.扩容集群
扩容控制节点计算节点
# 扩容计算节点 [root@wqw1 ~]# kcctl scale-up --nodes 172.20.41.207 # 不使用-p传入ssh密码,使用clusterfile中定义的默认密码 ...过程省略 2023-05-29 13:59:09 [INFO] [runtime.go:169] cluster scale up succeeded! 2023-05-29 13:59:09 [INFO] [scale-up.go:199] succeeded in scaling up cluster # 扩容控制节点 文中已有1个控制节点,这里扩容2个,保持控制节点为奇数个!!! [root@wqw1 ~]# kcctl scale-up --masters 172.20.41.205,172.20.41.206 -p 'P@88w0rd' # 新增节点使用此密码进行ssh连接 ...过程省略 2023-05-29 13:59:09 [INFO] [runtime.go:169] cluster scale up succeeded! 2023-05-29 13:59:09 [INFO] [scale-up.go:199] succeeded in scaling up cluster # 控制节点与计算节点一起扩容 [root@wqw1 ~]# kcctl scale-up --masters 172.20.41.205,172.20.41.206 --nodes 172.20.41.207 # 不使用-p传入ssh密码,使用clusterfile中定义的默认密码 ...过程省略 2023-05-29 13:59:09 [INFO] [runtime.go:169] cluster scale up succeeded! 2023-05-29 13:59:09 [INFO] [scale-up.go:199] succeeded in scaling up cluster # 计算节点超过证书允许 [root@wqw1 ~]# kcctl scale-up --nodes 172.20.41.208 2023-05-29 14:18:07 [ERROR] [root.go:59] kcctl-v1.0.0: failed to to scale up cluster: 预计节点数(4)超过证书所允许的节点数(3),请更新证书后再进行扩容操作 |
注意:2master节点场景暂不支持master节点扩容,仅支持node节点扩容。
5.删除节点/卸载集群
# 删除计算节点 [root@wqw1 ~]# kcctl delete --nodes 172.20.41.207 Are you sure to delete these master/node: [172.20.41.207]? Yes [y/yes], No [n/no] : y ...过程省略 2023-05-29 14:20:03 [INFO] [runtime.go:198] cluster scale down succeeded! # 删除控制节点 文中已有3个控制节点,这里删除2个,保持控制节点为奇数个!!! [root@wqw1 ~]# kcctl delete --masters 172.20.41.205,172.20.41.206 Are you sure to delete these master/node: [172.20.41.205,172.20.41.206]? Yes [y/yes], No [n/no] : y ...过程省略 2023-05-29 14:20:03 [INFO] [runtime.go:198] cluster scale down succeeded! # 控制节点与计算节点一起删除 [root@wqw1 ~]# kcctl delete --masters 172.20.41.205,172.20.41.206 --nodes 172.20.41.207 Are you sure to delete these master/node: [172.20.41.205,172.20.41.206,172.20.41.207]? Yes [y/yes], No [n/no] : y ...过程省略 2023-05-29 14:20:03 [INFO] [runtime.go:198] cluster scale down succeeded! # 卸载集群 [root@wqw1 ~]# kcctl delete --all [root@wqw1 ~]# kcctl delete -f Clusterfile -a # 若存在扩容节点,不要使用该方式,因为本地文件未更新 |
6.巡检脚本
在任意目录执行命令 patrol.sh 即可进行巡检
[root@wqw2-2 opt]# patrol.sh chrony对时服务检查 wqw2-2.kylincloud.org: 对时服务chronyd运行状态 正常 对时状态 正常 wqw3-2.kylincloud.org: 对时服务chronyd运行状态 正常 对时状态 正常 kubelet 服务运行状态: wqw2-2.kylincloud.org 正常 wqw3-2.kylincloud.org 正常 etcd 服务运行状态: wqw2-2.kylincloud.org 正常 etcd 节点健康状态 wqw2-2.kylincloud.org healthy k8s 节点状态: wqw2-2.kylincloud.org Ready wqw3-2.kylincloud.org Ready kubernetes POD状态: 正常 kubernetes 基于namespace 服务检查 calico-apiserver: deployment.apps 正常 calico-system: deployment.apps 正常 daemonsets.apps 正常 cert-manager: deployment.apps 正常 ingress-nginx: daemonsets.apps 正常 kube-system: deployment.apps 正常 daemonsets.apps 正常 kylin-system: deployment.apps 正常 local-path-storage: deployment.apps 正常 monitoring: deployment.apps 正常 statefulsets.apps 正常 daemonsets.apps 正常 tigera-operator: deployment.apps 正常 集群节点资源检查 wqw2-2.kylincloud.org 内存使用情况 total: 14Gi, used: 2.4Gi, free: 1.8Gi 系统平均负载: 近1分钟: 0.46, 近5分钟: 0.22, 近15分钟: 0.22 实时系统资源使用前5的进程: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3284786 root 20 0 1602368 770816 71488 S 12.5 5.0 9:11.62 kube-ap+ 3284749 root 20 0 893504 123968 58432 S 6.2 0.8 0:49.20 kube-co+ 3284806 root 20 0 10.2g 90368 29888 S 6.2 0.6 1:54.53 etcd 3357834 root 20 0 220160 7104 3648 R 6.2 0.0 0:00.02 top 1 root 20 0 177472 17472 7872 S 0.0 0.1 6:59.37 systemd 系统实时磁盘使用率: Filesystem Size Used Avail Use% Mounted on /dev/mapper/klc-root 199G 22G 177G 11% / /dev/vda2 1014M 165M 850M 17% /boot /dev/vda1 599M 6.5M 593M 2% /boot/efi wqw3-2.kylincloud.org 内存使用情况 total: 14Gi, used: 3.2Gi, free: 1.5Gi 系统平均负载: 近1分钟: 0.53, 近5分钟: 0.25, 近15分钟: 0.20 实时系统资源使用前5的进程: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2375238 root 20 0 220416 7488 3840 R 6.2 0.0 0:00.01 top 1 root 20 0 180352 21056 8768 S 0.0 0.1 24:49.04 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.23 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par+ 系统实时磁盘使用率: Filesystem Size Used Avail Use% Mounted on /dev/mapper/klc-root 199G 13G 186G 7% / /dev/vda2 1014M 165M 850M 17% /boot /dev/vda1 599M 6.5M 593M 2% /boot/efi [root@wqw2-2 opt]# |