一、基础环境及安装系统版本
操作系统:Centos8.5(kernel 4.18.0-384.e18-x86_64)
容器引擎:docker 20.10.11
kubernetes:v1.23.1
注意事项:
(1)kubernetes版本查看
最新版本号:https://storage.googleapis.com/kubernetes-release/release/stable.txt
版本发型说明:https://kubernetes.io/docs/setup/release/notes
(2)机器换机要求:每台机器 2 GB 或更多 RAM,2 个或更多 CPU,存储空间20G以上
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:
# 创建一个 Master 节点
$ kubeadm init
# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master节点的IP和端口 >
kubenetes集群环境主机信息
IP地址 | 主机名称 | 角色 |
---|---|---|
192.168.0.20 | k8s-master01,k8s-master01.io | master |
192.168.0.23 | k8s-node01,k8s-node01.io | node |
192.168.0.24 | k8s-node02,k8s-node03.io | node |
二、安装前的准备工作
- 主机时间同步
各主机可访问互联网,启用各个主机的chronyd服务即可,
主机无法访问互联网,可以把master配置为chronyd server,其他节点主机从master同步时间。sudo systemctl start chronyd.service sudo systemctl enable chronyd.service
- 各节点防火墙设置
各个Node运行kube-proxy组件需要借助iptables或ipvs构建Service资源对象,为了方便链接,关闭各主机上的iptabels相关的服务sudo ufw disable && sudo ufw status #ufw是针对Ubuntu系统发行的,是一种管理netfilter规则的简单方法,针对Centos可以关闭防火墙 # 扩展命令 # 查看防火墙状态:sudo systemctl status firewalld # 关闭防火墙: systemctl stop firewalld.service # 开启防火墙: systemctl start firewalld.service # 关闭开机启动: systemctl disable firewalld.service # 打开防火墙开机启动: systemctl enable firewalld.service
- 禁用swap设置
Swap是磁盘上的空间,性能较差,为了避免影响Kubenetes的调度和编排应用程序的运行效果,禁用Swap设备(加入集群,也可以在命令尾部加上 –ignore-preflight-errors=Swap ,以忽略 k8s 对主机 swap 的检查)
永久禁用:sudo swapoff -a #永久性禁用Swap功能 # 注释掉 /etc/fstab文件中,所有文件系统类型为swap的配置行
- 确保每个节点的唯一主机名、MAC 地址和 product_uuid
获取网络接口的 MAC 地址:ip link或 ifconfig -a 查看product_uuid: sudo cat /sys/class/dmi/id/product_uuid
- 配置主机hosts
# k8s-adm-api.io 192.168.0.20 k8s-master01 k8s-master01.io k8s-adm-api.io 192.168.0.23 k8s-node01 k8s-node01.io 192.168.0.24 k8s-node02 k8s-node02.io
- 配置Kubernetes的镜像(阿里云)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
如:
- 让 iptables 获得桥接流量
确保br_netfilter模块已加载,可以通过运行命令lsmod | grep br_netfilter查看[root@k8s-master01 etc]# lsmod | grep br_netfilter br_netfilter 24576 0 bridge 200704 1 br_netfilter [root@k8s-master01 etc]#
要显式加载它,请调用sudo modprobe br_netfilter
[root@k8s-master01 etc]# sudo modprobe br_netfilter
作为Linux节点的iptables可以获得桥接流量的要求,应该确保net.bridge.bridge-nf-call-iptables在sysctl配置中设置为1,例如
$ cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
$ cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sudo sysctl --system
三、安装kubeadm、kubelet和kubectl
您将在所有机器上安装这些软件包:
-
kubeadm
:引导集群的命令。 -
kubelet
:在集群中的所有机器上运行的组件,并执行诸如启动 Pod 和容器之类的操作。 -
kubectl
:用于与集群通信的命令行实用程序。
kubeadm不会安装或管理kubelet
或kubectl
对你,所以你需要确保他们想要kubeadm安装适合你的Kubernetes控制平面的版本匹配。如果不这样做,则存在发生版本偏差的风险,这可能导致意外的错误行为。但是,kubelet 和控制平面之间支持一个次要版本倾斜,但 kubelet 版本可能永远不会超过 API 服务器版本
安装命令
yum install -y kubelet kubeadm kubectl
#可以指定版本安装,版本指定格式为:PKG_NAME-VERSION-RELEASE
#如:yum install -y kubelet-1.23.1-00 kubeadm-1.23.1-00 kubectl-1.23.1-00
#
安装日志:
[root@k8s-master01 yum.repos.d]# yum install -y kubelet-1.23.1-00 kubeadm-1.23.1-00 kubectl-1.23.1-00
Kubernetes 2.7 kB/s | 844 B 00:00
Kubernetes 15 kB/s | 4.4 kB 00:00
导入 GPG 公钥 0x307EA071:
Userid: "Rapture Automatic Signing Key (cloud-rapture-signing-key-2021-03-01-08_01_09.pub)"
指纹: 7F92 E05B 3109 3BEF 5A3C 2D38 FEEA 9169 307E A071
来自: https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
导入 GPG 公钥 0x836F4BEB:
Userid: "gLinux Rapture Automatic Signing Key (//depot/google3/production/borg/cloud-rapture/keys/cloud-rapture-pubkeys/cloud-rapture-signing-key-2020-12-03-16_08_05.pub) <glinux-team@google.com>"
指纹: 59FE 0256 8272 69DC 8157 8F92 8B57 C5C2 836F 4BEB
来自: https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
导入 GPG 公钥 0xDC6315A3:
Userid: "Artifact Registry Repository Signer <artifact-registry-repository-signer@google.com>"
指纹: 35BA A0B3 3E9E B396 F59C A838 C0BA 5CE6 DC63 15A3
来自: https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
Kubernetes 11 kB/s | 975 B 00:00
导入 GPG 公钥 0x3E1BA8D5:
Userid: "Google Cloud Packages RPM Signing Key <gc-team@google.com>"
指纹: 3749 E1BA 95A8 6CE0 5454 6ED2 F09C 394C 3E1B A8D5
来自: https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
Kubernetes 296 kB/s | 136 kB 00:00
依赖关系解决。
========================================================================================================================================================================
软件包 架构 版本 仓库 大小
========================================================================================================================================================================
安装:
kubeadm x86_64 1.23.1-0 kubernetes 9.0 M
kubectl x86_64 1.23.1-0 kubernetes 9.5 M
kubelet x86_64 1.23.1-0 kubernetes 21 M
安装依赖关系:
conntrack-tools x86_64 1.4.4-10.el8 baseos 204 k
cri-tools x86_64 1.19.0-0 kubernetes 5.7 M
kubernetes-cni x86_64 0.8.7-0 kubernetes 19 M
libnetfilter_cthelper x86_64 1.0.0-15.el8 baseos 24 k
libnetfilter_cttimeout x86_64 1.0.0-11.el8 baseos 24 k
libnetfilter_queue x86_64 1.0.4-3.el8 baseos 31 k
socat x86_64 1.7.4.1-1.el8 appstream 323 k
事务概要
========================================================================================================================================================================
安装 10 软件包
总下载:64 M
安装大小:287 M
下载软件包:
(1/10): libnetfilter_cthelper-1.0.0-15.el8.x86_64.rpm 147 kB/s | 24 kB 00:00
(2/10): libnetfilter_cttimeout-1.0.0-11.el8.x86_64.rpm 131 kB/s | 24 kB 00:00
(3/10): conntrack-tools-1.4.4-10.el8.x86_64.rpm 559 kB/s | 204 kB 00:00
(4/10): socat-1.7.4.1-1.el8.x86_64.rpm 819 kB/s | 323 kB