《Kubernetes部署篇:基于Kylin V10+ARM64架构CPU+containerd一键离线部署 ...

  金牌会员 | 2024-7-29 22:46:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 808|帖子 808|积分 2424

总结:整理不易,假如对你有帮助,能否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

一、部署配景

由于业务体系的特殊性,我们须要针对不同的客户情况部署基于containerd容器版 K8S 1.26.15集群,由于多数数用户都是专网情况,无法使用外网,为了更便捷,高效的部署,针对业务体系的特性,我这边编写了一键离线部署容器版K8S集群自动化工具。
说明:假如有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?

二、工具下载

基于Kylin V10+ARM64架构CPU+containerd一键离线部署容器版K8S1.26.15高可用集群工具

三、工具介绍

实现功能如下:
    1、当前一键部署工具仅支持 ARM64架构 Kylin Linux Advanced Server V10利用体系。
2、支持 单机、一主多从、三主多从等部署架构 K8S 1.26.15容器版(containerd)离线集群,且 证书有效期为99年
3、支持一键部署、集群检查、集群移除等功能。
4、支持一主多从、三主多从部署架构的worker节点 一键扩容和移除。
   说明:假如想要当前此工具支持别的利用体系,只须要修改basic-env/init_env.sh脚本,根据当当前利用体系修改成符合当前利用体系的下令。别的的containerd、kubeadm、kubectl、kubelet、nginx都是采用二进制安装方式,是通用的。

四、工具使用

说明:由于篇幅有限,这里以三主多从架构为例,像各人介绍K8S1.26.15高可用集群部署步骤!
4.1、部署前

1、更新libseccomp(部署前)
说明:以下利用所有K8S集群主机都需执行。
方法一:
  1. [root@ecs-c391-0003 kubernete-tools]# rpm -qa | grep libseccomp
  2. libseccomp-2.4.1-3.ky10.aarch64
  3. [root@ecs-c391-0003 kubernete-tools]# rpm -e `rpm -qa | grep libseccomp` --nodeps
  4. [root@ecs-c391-0003 kubernete-tools]# cp libseccomp.so.2 /usr/lib64/
复制代码
部署包包罗libseccomp.so.2文件,你也可在安装containerd容器引擎中手动编译安装,如下图所示:

方法二:
  1. rpm -e `rpm -qa | grep libseccomp` --nodeps
  2. yum install gperf -y
  3. wget https://github.com/seccomp/libseccomp/releases/download/v2.5.4/libseccomp-2.5.4.tar.gz
  4. tar axf libseccomp-2.5.4.tar.gz && cd libseccomp-2.5.4
  5. ./configure && make && make install
  6. ln -s /usr/local/lib/libseccomp.so.2 /usr/lib64/libseccomp.so.2
复制代码
总结: 经过多次试验,安装k8s1.26.15版本时,假如libseccomp版本为2.4.1,则会报错unable to retrieve OCI runtime error。

2、查看帮助下令
如下图所示:

部署下令可参考如下:
a、单机部署
  1. ./kubernetes_tools.sh deploy single-node
复制代码
b、一主多从部署
  1. # 1、master节点部署
  2. ./kubernetes_tools.sh deploy master
  3. # 2、worker节点部署
  4. ./kubernetes_tools.sh deploy node --join-as-worker
复制代码
c、三主多从部署
  1. # 1、master节点部署
  2. ./kubernetes_tools.sh deploy master
  3. ./kubernetes_tools.sh deploy node --join-as-master
  4. ./kubernetes_tools.sh deploy node --join-as-master
  5. # 2、worker节点部署
  6. ./kubernetes_tools.sh deploy node --join-as-worker
复制代码

4.2、部署中

2、编辑变量文件
  1. [root@ecs-c391-0003 kubernete-tools]# cp cluster.conf.tpl cluster.conf
  2. [root@ecs-c391-0003 kubernete-tools]# vim cluster.conf
复制代码
如下图所示:
  1. # 适用模式:支持一主多从集群模式和三主多从集群模式
  2. #   1.一主多从: API_SERVER_HOST_01、API_SERVER_HOST_02、API_SERVER_HOST_03 填写相同的IP地址
  3. #   2.三主多从: API_SERVER_HOST_01、API_SERVER_HOST_02、API_SERVER_HOST_03 填写不同的IP地址
  4. #   3.安装顺序为:API_SERVER_HOST_01节点 > API_SERVER_HOST_02节点 > API_SERVER_HOST_03节点
  5. # 三台API SERVER主机IP地址
  6. export API_SERVER_HOST_01="192.168.1.156"
  7. export API_SERVER_HOST_02="192.168.1.171"
  8. export API_SERVER_HOST_03="192.168.1.238"
  9. # Nginx代理IP地址和代理端口,端口不冲突情况下,建议不修改
  10. export API_SERVER_PROXY_HOST="${API_SERVER_HOST_01}"
  11. export API_SERVER_PROXY_PORT="8443"
  12. # 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
  13. export BASE_DIR="/data"
  14. # containerd数据目录,默认不修改
  15. export CONTAINERD_STORAGE_DIR="${BASE_DIR}/basic-data/containerd"
  16. # kubernetes version,默认不修改
  17. export KUBERNETES_VERSION="v1.26.15"
  18. # 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
  19. # 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
  20. export NODE_NAME="k8s-master-156"
  21. # 填写本机地址即可
  22. export APISERVER_ADVERTISE_ADDRESS="192.168.1.156"
  23. # 镜像仓库地址,默认不修改
  24. export IMAGE_REPOSITORY="registry.cn-hangzhou.aliyuncs.com/google_containers"
  25. # 集群Pod网段,可根据实际情况修改
  26. export POD_NETWORK_CIDR="10.48.0.0/16"
  27. # 集群Service网段,可根据实际情况修改
  28. export SERVICE_CIDR="10.96.0.0/16"
  29. # kubernetes node port range,默认不修改
  30. export SERVICE_NODE_POD_RANGE="30000-36000"
复制代码

3、部署 第一个 master节点
  1. [root@ecs-c391-0003 kubernete-tools]# ./kubernetes_tools.sh deploy master
复制代码

4、第一个master节点部署完成后的部署包分别拷贝到别的master节点和worker节点。
  1. [root@k8s-master-156 pkgs]# scp -r kubernete-tools/ root@172.18.1.171:/data/pkgs
  2. [root@k8s-master-156 pkgs]# scp -r kubernete-tools/ root@172.18.1.238:/data/pkgs
  3. [root@k8s-master-156 pkgs]# scp -r kubernete-tools/ root@172.18.1.66:/data/pkgs
复制代码

5、部署第二个master节点
说明:第二个节点的部署只须要修改当前节点的名称,也就是主机名。
  1. # 1、编辑cluster.conf文件
  2. [root@ecs-c391-0001 kubernete-tools]# vim cluster.conf
  3. # 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
  4. # 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
  5. export NODE_NAME="k8s-master-171"
  6. # 填写本机地址即可
  7. export APISERVER_ADVERTISE_ADDRESS="192.168.1.171"
  8. # 2、以master角色加入kubernetes集群
  9. [root@ecs-c391-0001 kubernete-tools]# ./kubernetes_tools.sh deploy node --join-as-master
复制代码

6、部署 第三个 master节点
说明:第三个节点的部署只须要修改当前节点的名称,也就是主机名。
  1. # 1、编辑cluster.conf文件
  2. [root@ecs-c391-0004 kubernete-tools]# vim cluster.conf
  3. # 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
  4. # 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
  5. export NODE_NAME="k8s-master-238"
  6. # 填写本机地址即可
  7. export APISERVER_ADVERTISE_ADDRESS="192.168.1.238"
  8. # 2、以master角色加入kubernetes集群
  9. [root@ecs-c391-0004 kubernete-tools]# ./kubernetes_tools.sh deploy node --join-as-master
复制代码

7、部署 worker节点
说明:依次类推,别的节点的部署只须要修改当前节点的名称,也就是主机名。
  1. # 1、编辑cluster.conf文件
  2. [root@ecs-c391-0002 kubernete-tools]# vim cluster.conf
  3. # 当前机器的节点名称,一般为 xxx-cluster-master-01、xx-cluster-node-01
  4. # 部署过程中,此参数会作为主机名,只能由小写字母、数字、.和-组成,且只能以小写字母/数字开头或结尾
  5. export NODE_NAME="k8s-worker-66"
  6. # 填写本机地址即可
  7. export APISERVER_ADVERTISE_ADDRESS="192.168.1.66"
  8. # 2、以worker角色加入kubernetes集群
  9. [root@ecs-c391-0002 kubernete-tools]# ./kubernetes_tools.sh deploy node --join-as-worker
复制代码

8、重启k8s主机
说明:集群部署完后,无论是master节点还是worker节点均需重启。
  1. reboot
复制代码

4.2、部署后

1、检查集群状态
  1. [root@k8s-master-156 kubernete-tools]# ./kubernetes_tools.sh check
复制代码
如下图所示:


2、检查证书有效时间
  1. [root@k8s-master-156 kubernete-tools]# kubeadm certs  check-expiration
复制代码
如下图所示:


3、集群DNS测试
  1. [root@k8s-master-156 kubernete-tools]# cd test/busybox/
  2. [root@k8s-master-156 busybox]# ./test.sh
复制代码
如下图所示:


4、集群功能测试
  1. [root@k8s-master-156 kubernete-tools]# cd test/nginx/
  2. [root@k8s-master-156 nginx]# kubectl apply -f nginx.yaml
复制代码
如下图所示:

在浏览器上访问Nginx,如下所示:


总结:整理不易,假如对你有帮助,能否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

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

标签云

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