在真正安装k8s之前,需要做一些必要的准备工作。
从上面kubernetes架构图可以看出,k8s集群机器可以分为3类:
具体可以参考官方文档 大规模集群的注意事项
K8S集群涉及3个网段,要确保3个网段没有重叠
1、集群中节点本身的网段
2、Pod网络CIDR(地址段)
3、Service CIDR(地址段)
为确保这3个网段不重叠,一般会选择3个不同的私有网络地址段
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
操作系统一般选择Ubuntu或最新版的CentOS,我的演示环境的使用过的Rocky9.2(兼容CentOS),具体使用什么系统还有根据个人或企业偏好来选择。
这里我创建了6个虚拟机(建议配置好网络和主机名以后给虚拟机做个快照,方便后期重复实验可以快速恢复环境),各个机器的角色和服务如下:
主机名 | IP | 服务 | 角色 |
---|---|---|---|
rocky01.examp.io | 192.168.36.151 | apiserver/scheduler/controller-manager/kubelet/kube-proxy | 主节点 |
rocky01.examp.io | 192.168.36.152 | apiserver/scheduler/controller-manager/kubelet/kube-proxy | 主节点 |
rocky01.examp.io | 192.168.36.153 | etcd/kubelet/kube-proxy | 工作节点 |
rocky01.examp.io | 192.168.36.154 | etcd/kubelet/kube-proxy | 工作节点 |
rocky01.examp.io | 192.168.36.155 | etcd/kubelet/kube-proxy | 工作节点 |
docker.examp.io | 192.168.36.128 | kubectl/dnsmasq/ansible | 客户端 |
网段选择:
演示环境我没有逐个机器进行配置 hosts 文件,而是部署了dnsmasq 这个简易的dns服务(在公司一般都会有单独的DNS服务,直接使用即可)
dnsmasq 安装也很简单,下面以CentOS为例进行演示
# yum 安装
~]# yum install dnsmasq -y
# 编辑配置文件
~]# vi /etc/dnsmasq.d/server.conf
port=53
listen-address=192.168.36.128
domain=example.io
# 依赖的外部DNS服务
resolv-file=/etc/resolv.dnsmasq.conf
# 不加载默认的 /etc/hosts
no-hosts
# 读取目录中的所有文件,文件更新将自动读取
hostsdir=/etc/dnsmasq.hosts
# addn-hosts=/etc/dnsmasq.hosts
expand-hosts
cache-size=1000
log-queries
log-facility=/var/log/dnsmasq/dnsmasq.log
log-async=100
# 外部使用阿里的dns服务
~]# vi /etc/resolv.dnsmasq.conf
nameserver 223.5.5.5
nameserver 223.6.6.6
# 配置集群中的各个主机IP和名称
~]# cat /etc/dnsmasq.hosts/rockylinux
192.168.36.151 rocky01
192.168.36.152 rocky02
192.168.36.153 rocky03
192.168.36.154 rocky04
192.168.36.155 rocky05
# 启动服务
~]# systemctl start dnsmasq
# 集群中其它节点配置该dns服务即可
~]# cat /etc/resolv.conf
# Generated by NetworkManager
search example.io
nameserver 192.168.36.128
在ansible节点上下载所需的二进制包,并解压到对应位置
已上传百度网盘
链接:https://pan.baidu.com/s/1Mq6Wpu4-YE582jGNsF2cBQ 提取码:cshx
sudo wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
sudo wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson
sudo chmod u+x /usr/local/bin/cfssl
sudo chmod u+x /usr/local/bin/cfssljson
wget https://storage.googleapis.com/kubernetes-release/release/v1.29.0/kubernetes-server-linux-amd64.tar.gz
tar -xzf kubernetes-server-linux-amd64.tar.gz
sudo mv kubernetes/server/bin/* /usr/local/bin/
wget https://github.com/etcd-io/etcd/releases/download/v3.5.11/etcd-v3.5.11-linux-amd64.tar.gz
tar -xzf etcd-v3.5.11-linux-amd64.tar.gz
sudo mv etcd-v3.5.11-linux-amd64/{etcd,etcdctl} /usr/local/bin/
sudo mkdir /opt/pkgs/
wget https://github.com/containerd/containerd/releases/download/v1.7.11/cri-containerd-cni-1.7.11-linux-amd64.tar.gz -O /root/
# 如果使用 calico 需要下载 calicoctl
wget https://github.com/projectcalico/calico/releases/download/v3.26.1/calicoctl-linux-amd64
sudo mv calicoctl-linux-amd64 /usr/local/bin/calicoctl
# 如果是centos 7需要单独下载 Static Linking 的 runc
wget https://github.com/opencontainers/runc/releases/download/v1.1.9/runc.amd64
sudo mv runc.amd64 /usr/local/sbin/runc
sudo chmod u+x /usr/local/sbin/runc