官方必读!脚本附赠技术教程系列:麒麟天御安全域管平台V4.0.0服务端云底座部署(2)

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 【主机名】
$ hostnamectl set-hostname master1

# 将所有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
master1节点执行

$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目录,本地导入镜像
$ cd /root/kine/kine-images && bash load.sh
$ cd /root/kine/kine-server
# 设置环境变量,分别设置MASTER(mater1)BACKUP(mater2)ip地址,具体参数如下
$ export MASTER="172.20.41.203"
$ export BACKUP="172.20.41.204"
# 执行kine初始化
$ bash install.sh deploy master
# kine初始化后检测输出结构如下所示,则表示主节点kine相关服务状态成功
$ bash install.sh check master
mysql: [Warning] Using a password on the command line interface can be insecure.
Checking mariadb master status ok, good luck!

# 将初始化物料上传至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目录,本地导入镜像
$ cd /root/kine/kine-images && bash load.sh

## 进入初始化kine部署目录
$ cd /root/kine/kine-server
# 设置环境变量,分别设置MASTERBACKUPip地址,具体参数如下
$ export MASTER="172.20.41.203"
$ export BACKUP="172.20.41.204"

# 执行kine部署
$ bash install.sh deploy backup
# kine初始化后检测
# 输出结构如下所示,则表示主节点kine相关服务状态成功
$ bash install.sh check backup
Checking mariadb slave status ok, good luck!

## 任意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.常见问题处理

  1. 安装时出现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集群的命令即可如后续过程还出现图上问题,重复执行安装命令

  1. 重复安装时出现端口占用和文件存在的问题

当做集群重复部署时会遇到如下问题

这是因重复部署集群时,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+端口访问两种方式:

  • 域名访问
  1. 如您有自己的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 }}

  1. 访问域名
  • https://www.kylincloud.org:30000
  • http://www.kylincloud.org:30000
  • IP+端口访问
  1. 可以使用集群的任意节点IP + 30000端口访问
  2. 访问IP+端口
  • https://172.20.41.202:30000
  • http://172.20.41.202:30000

用户名:admin 密码:P@88w0rd

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]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/410061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode使用restClient实现各种http请求

vscode使用restClient实现各种http请求 一&#xff0c;安装插件 首先&#xff0c;我们要在vscode的扩展中&#xff0c;搜索rest Client&#xff0c;然后安装它&#xff0c;这里我已经安装过了。 安装后&#xff0c;我们就可以使用rest client插件进行http各种操作了。 二&…

动态规划的时间复杂度优化

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 优化动态规划的时间复杂度&#xff0c;主要有如下几种&#xff1a; 一&#xff0c;不同的状态表示。 比如&#xff1a;n个人&#xff0c;m顶帽子。 第一种方式&#xff1a;dp[i][mask] ,i表示前i个人已经选择帽子&…

听李国武老师讲帕累托图

一、帕累托图是什么&#xff1f; 帕累托图是一种特殊的图表&#xff0c;它以二维的方式展示数据&#xff0c;通过将数据按照两个特定的维度进行分类和排序&#xff0c;帮助我们更好地理解和分析数据。 二、如何使用帕累托图&#xff1f; 确定两个分类维度&#xff1a;首先&am…

力扣--动态规划1014.最佳观光组合

思路分析: 初始化左侧景点的评分为第一个景点的评分&#xff0c;最终结果为0。从第二个景点开始遍历数组。对于每个景点&#xff0c;计算当前观光组合的得分&#xff0c;即当前景点的评分 左侧景点的评分 - 两者之间的距离。更新最终结果为当前得分和之前结果的较大值。更新左…

数据结构:链表的冒泡排序

法一&#xff1a;修改指针指向 //法二 void maopao_link(link_p H){if(HNULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}link_p tailNULL;while(H->next->next!tail){link_p pH;link_p qH->next;while(q…

探索创意的无尽宇宙——Photoshop 2020,你的视觉魔法棒

在数字艺术的广阔天地中&#xff0c;Photoshop 2020无疑是一颗璀璨的明星。这款由Adobe公司精心打造的图像处理软件&#xff0c;自推出以来&#xff0c;便以其强大的功能和卓越的性能&#xff0c;赢得了全球数百万设计师、摄影师和爱好者的青睐。无论是Mac还是Windows系统&…

UE引擎, 在create blueprint from selection中, 点击select卡死问题处理

1. bug场景 在创建子类时点击select&#xff0c; ue会直接冻结无法点击 2. 解决方案 点击“Edit” -> “Edit Preference” 选择Asset Editor Open Location的选项从默认改为“Main Window”即可解决问题 3. 问题产生的原因 原因是UE的弹窗在拓展显示器或者笔记本显示…

DIY制作耳机壳时使用哪一种胶粘剂性价比最高?

选择性价比最高的胶粘剂需要根据具体的应用场景和需求来确定。不同的胶粘剂有不同的特点和使用范围&#xff0c;因此其性价比也不同。 一般来说&#xff1a; 如果需要快速粘合、透明度高、粘合力强的场景&#xff0c;可以选择UV树脂胶&#xff1b; 如果需要高温、高强度的粘合…

复合式统计图绘制方法(1)

复合式统计图绘制方法&#xff08;1&#xff09; 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制&#xff0c;饼图环形图绘制较难。 在统计图的应用方面&#xff0c;有时候有两个关联的统计学的样本值要用统计图来表达&#xff0…

Webserver解决segmentation fault(core dump)段错问问题

前言 在完成了整个项目后&#xff0c;我用make命令编译了server&#xff0c;当我运行./server文件时&#xff0c;出现了段错误 在大量的代码中找出错因并不是一件容易的事&#xff0c;尤其是对新手程序员来说。而寻找bug的过程就像是侦探调查线索追查凶手一样&#xff0c;我们…

GO语言基础总结

多态&#xff1a; 定义一个父类的指针&#xff08;接口&#xff09;&#xff0c;然后把指针指向子类的实例&#xff0c;再调用这个父类的指针&#xff0c;然后子类的方法被调用了&#xff0c;这就是多态现象。 Golang 高阶 goroutine 。。。。。 channel channel的定义 …

【JVM】聊聊JVM生产环境常见的OOM问题

对于JVM来说&#xff0c;因为划分有固定的区域来执行字节码文件&#xff0c;无外乎&#xff0c;出问题的&#xff0c;也就是按照对应分分区会有常见的OOM问题。 栈 对于栈来说&#xff0c;栈的主要作用就是用于方法的执行&#xff0c;方法调用入栈、方法调出出栈。但是如果我…

LeetCode_Java_动态规划系列(1)(题目+思路+代码)

目录 斐波那契类型 746.使用最小花费爬楼梯 矩阵 120. 三角形最小路径和 斐波那契类型 746.使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。…

TS223——触摸键检测IC,具有低功耗和宽工作电压是触摸键的DC和AC特点,广泛消费性产品

TS223是触摸键检测IC&#xff0c;提供1个触摸键。触摸检测IC是为了用可变面积的键取代传统的按钮键而设计的。低功耗和宽工作电压是触摸键的DC和AC特点。 TS223采用SSOP16、SOT-23-6的封 装形式封装。 主要特点&#xff1a; ● 工作电压2.0V~5.5V ● 工作电流VDD3V&#xff0…

C++数据库连接池

功能实现设计 &#xff1a; ConnectionPool.cpp 和 ConnectionPool.h &#xff1a;连接池代码实现 Connection.cpp 和 Connection.h &#xff1a;数据库操作代码、增删改查代码实现 连接池主要包含了以下功能点 &#xff1a; 1.连接池只需要一个实例&#xff0c;所以 Connec…

力扣思路题:丑数

此题的思路非常奇妙&#xff0c;可以借鉴一下 bool isUgly(int num){if(num0)return false;while(num%20)num/2;while(num%30)num/3;while(num%50)num/5;return num1; }

no main manifest attribute, in app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

安全测试自学手册之软件安全测试基础

安全测试的概念 定义&#xff1a;指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。】 应用软件的安全性测试&#xff1a;软件自身设计中存在的安全隐患&#xff0c;并检查软件对非法入侵的防御能力。系统级别的安全性测试&#xff1a;确保只有具备系统平台访问权限…

挑战杯 基于机器学习与大数据的糖尿病预测

文章目录 1 前言1 课题背景2 数据导入处理3 数据可视化分析4 特征选择4.1 通过相关性进行筛选4.2 多重共线性4.3 RFE&#xff08;递归特征消除法&#xff09;4.4 正则化 5 机器学习模型建立与评价5.1 评价方式的选择5.2 模型的建立与评价5.3 模型参数调优5.4 将调参过后的模型重…

ARCMAP进行天空开阔度(SVF)分析

这里的SVF并不是生物学或医学的(Stromal Vascular Fraction),而是指GIS中的(Sky View Factor,SVF),即为(城市)天空开阔度。 城市天空开阔度(Sky View Factor,SVF)是重要的城市形态学参数,那今天博主就跟大家讲一下如何用ArcMap来计算天空开阔度。 1、加载数据 需要加载…