当前位置:   article > 正文

二进制部署K8S集群(单master)

二进制部署K8S集群(单master)

目录

一、架构图

二、部署步骤

1、实验环境

2、操作系统初始化配置

3、部署 docker引擎

4、部署 etcd 集群

5、部署 Master 组件


一、架构图

二、部署步骤

1、实验环境

服务器类型IP地址
master192.168.80.5
node01192.168.80.8
node02192.168.80.9

2、操作系统初始化配置

  1. #关闭防火墙
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
  5. #关闭selinux
  6. setenforce 0
  7. sed -i 's/enforcing/disabled/' /etc/selinux/config
  8. #关闭swap
  9. swapoff -a
  10. sed -ri 's/.*swap.*/#&/' /etc/fstab
  11. #根据规划设置主机名
  12. hostnamectl set-hostname master01
  13. hostnamectl set-hostname node01
  14. hostnamectl set-hostname node02
  15. #在master添加hosts
  16. cat >> /etc/hosts << EOF
  17. 192.168.80.5 master01
  18. 192.168.80.7 master02
  19. 192.168.80.8 node01
  20. 192.168.80.9 node02
  21. EOF
  22. #调整内核参数
  23. cat > /etc/sysctl.d/k8s.conf << EOF
  24. net.bridge.bridge-nf-call-ip6tables = 1
  25. net.bridge.bridge-nf-call-iptables = 1
  26. net.ipv6.conf.all.disable_ipv6=1
  27. net.ipv4.ip_forward=1
  28. EOF
  29. sysctl --system
  30. #时间同步
  31. yum install ntpdate -y
  32. ntpdate time.windows.com

3、部署 docker引擎

  1. *所有node节点部署docker引擎
  2. yum install -y yum-utils device-mapper-persistent-data lvm2
  3. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. yum install -y docker-ce docker-ce-cli containerd.io
  5. systemctl start docker.service
  6. systemctl enable docker.service

4、部署 etcd 集群

在master01节点上操作

  1. #准备cfssl证书生成工具
  2. wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
  3. wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
  4. wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo
  5. chmod +x /usr/local/bin/cfssl*
  6. #生成Etcd证书
  7. mkdir /opt/k8s
  8. cd /opt/k8s/
  9. #上传 etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中
  10. chmod +x etcd-cert.sh etcd.sh
  11. #创建用于生成CA证书、etcd 服务器证书以及私钥的目录
  12. mkdir /opt/k8s/etcd-cert
  13. mv etcd-cert.sh etcd-cert/
  14. cd /opt/k8s/etcd-cert/
  15. ./etcd-cert.sh #生成CA证书、etcd 服务器证书以及私钥
  16. ls
  17. ca-config.json ca-csr.json ca.pem server.csr server-key.pem
  18. ca.csr ca-key.pem etcd-cert.sh server-csr.json server.pem
  19. #上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务
  20. https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz
  21. cd /opt/k8s/
  22. tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
  23. ls etcd-v3.4.9-linux-amd64
  24. Documentation etcd etcdctl README-etcdctl.md README.md READMEv2-etcdctl.md
  25. #创建用于存放 etcd 配置文件,命令文件,证书的目录
  26. mkdir -p /opt/etcd/{cfg,bin,ssl}
  27. cd /opt/k8s/etcd-v3.4.9-linux-amd64/
  28. mv etcd etcdctl /opt/etcd/bin/
  29. cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/
  30. cd /opt/k8s/
  31. ./etcd.sh etcd01 192.168.80.5 etcd02=https://192.168.80.8:2380,etcd03=https://192.168.80.9:2380
  32. #进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况
  33. #可另外打开一个窗口查看etcd进程是否正常
  34. ps -ef | grep etcd
  35. #把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
  36. scp -r /opt/etcd/ root@192.168.80.8:/opt/
  37. scp -r /opt/etcd/ root@192.168.80.9:/opt/
  38. scp /usr/lib/systemd/system/etcd.service root@192.168.80.8:/usr/lib/systemd/system/
  39. scp /usr/lib/systemd/system/etcd.service root@192.168.80.9:/usr/lib/systemd/system/

在node01节点上操作

  1. vim /opt/etcd/cfg/etcd
  2. #[Member]
  3. ETCD_NAME="etcd02" #修改
  4. ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
  5. ETCD_LISTEN_PEER_URLS="https://192.168.80.8:2380" #修改
  6. ETCD_LISTEN_CLIENT_URLS="https://192.168.80.8:2379" #修改
  7. #[Clustering]
  8. ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.8:2380" #修改
  9. ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.8:2379" #修改
  10. ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.5:2380,etcd02=https://192.168.80.8:2380,etcd03=https://192.168.80.9:2380"
  11. ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
  12. ETCD_INITIAL_CLUSTER_STATE="new"
  13. #启动etcd服务
  14. systemctl start etcd
  15. systemctl enable etcd
  16. systemctl status etcd

在node02节点上操作

  1. vim /opt/etcd/cfg/etcd
  2. #[Member]
  3. ETCD_NAME="etcd03" #修改
  4. ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
  5. ETCD_LISTEN_PEER_URLS="https://192.168.80.9:2380" #修改
  6. ETCD_LISTEN_CLIENT_URLS="https://192.168.80.9:2379" #修改
  7. #[Clustering]
  8. ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.80.9:2380" #修改
  9. ETCD_ADVERTISE_CLIENT_URLS="https://192.168.80.9:2379" #修改
  10. ETCD_INITIAL_CLUSTER="etcd01=https://192.168.80.5:2380,etcd02=https://192.168.80.8:2380,etcd03=https://192.168.80.9:2380"
  11. ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
  12. ETCD_INITIAL_CLUSTER_STATE="new"
  13. #启动etcd服务
  14. systemctl start etcd
  15. systemctl enable etcd
  16. systemctl status etcd

检查etcd群集状态和查看成员列表

  1. ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.80.5:2379,https://192.168.80.8:2379,https://192.168.80.9:2379" endpoint health --write-out=table
  2. ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.80.5:2379,https://192.168.80.8:2379,https://192.168.80.9:2379" --write-out=table member list

5、部署 Master 组件

在master01节点上操作

  1. #上传 master.zip 和 k8s-cert.sh 到 /opt/k8s 目录中,解压 master.zip 压缩包
  2. cd /opt/k8s/
  3. unzip master.zip
  4. chmod +x *.sh
  5. #创建kubernetes工作目录
  6. mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs} -p
  7. #创建用于生成CA证书、相关组件的证书和私钥的目录
  8. mkdir /opt/k8s/k8s-cert
  9. mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
  10. cd /opt/k8s/k8s-cert/
  11. vim k8s-cert.sh
  12. ./k8s-cert.sh #生成CA证书、相关组件的证书和私钥

  1. ls *pem
  2. admin-key.pem apiserver-key.pem ca-key.pem kube-proxy-key.pem
  3. admin.pem apiserver.pem ca.pem kube-proxy.pem
  4. #复制CA证书、apiserver相关证书和私钥到 kubernetes工作目录的 ssl 子目录中
  5. cp ca*pem apiserver*pem /opt/kubernetes/ssl/
  6. #上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中,解压 kubernetes 压缩包
  7. #下载地址:https://github.com/kubernetes/kubernetes/blob/release-1.20/CHANGELOG/CHANGELOG-1.20.md
  8. #注:打开链接你会发现里面有很多包,下载一个server包就够了,包含了Master和Worker Node二进制文件。
  9. cd /opt/k8s/
  10. tar zxvf kubernetes-server-linux-amd64.tar.gz
  11. #复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中
  12. cd /opt/k8s/kubernetes/server/bin
  13. cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
  14. ln -s /opt/kubernetes/bin/* /usr/local/bin/
  15. #创建 bootstrap token 认证文件,apiserver 启动时会调用,然后就相当于在集群内创建了一个这个用户,接下来就可以用 RBAC 给他授权
  16. cd /opt/k8s/
  17. vim token.sh
  18. #!/bin/bash
  19. BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
  20. cat > /opt/kubernetes/cfg/token.csv <<EOF
  21. ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
  22. EOF

  1. chmod +x token.sh
  2. ./token.sh
  3. cat /opt/kubernetes/cfg/token.csv
  4. #二进制文件、token、证书都准备好后,开启 apiserver 服务
  5. cd /opt/k8s/
  6. ./apiserver.sh 192.168.80.5 https://192.168.80.5:2379,https://192.168.80.8:2379,https://192.168.80.9:2379
  7. #检查进程是否启动成功
  8. ps aux | grep kube-apiserver
  9. netstat -natp | grep 6443 #安全端口6443用于接收HTTPS请求,用于基于Token文件或客户端证书等认证
  10. #启动 scheduler 服务
  11. cd /opt/k8s/
  12. ./scheduler.sh
  13. ps aux | grep kube-scheduler
  14. #启动 controller-manager 服务
  15. ./controller-manager.sh
  16. ps aux | grep kube-controller-manager
  17. #生成kubectl连接集群的kubeconfig文件
  18. ./admin.sh
  19. #通过kubectl工具查看当前集群组件状态
  20. kubectl get cs

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/917857
推荐阅读
相关标签
  

闽ICP备14008679号