文章目录
- 一、集群架构规划信息
- 二、系统初始化准备(所有节点同步操作)
- 三、安装kubeadm(所有节点同步操作)
- 四、初始化K8S集群(master节点操作)
- 五、添加Node节点到K8S集群中
- 六、安装Calico网络插件
- 七、测试CoreDNS可用性
一、集群架构规划信息
- pod网段:10.244.0.0/16
- service网段:10.10.0.0/16
- 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。
服务器信息:
主机名 | IP地址 | 操作系统 |
---|---|---|
k8s-master-1 | 16.32.15.123 | 20.04.1-Ubuntu |
k8s-node-1 | 16.32.15.124 | 20.04.1-Ubuntu |
二、系统初始化准备(所有节点同步操作)
1、切换root
用户,以下操作使用root
用户进行
sudo -i
2、配置国内仓库源,安装所需依赖
注意:下面是以Ubuntu20.04
系统的仓库源为例,如果系统版本不同,可到阿里镜像仓库寻找对应版本!!
cd /etc/apt
cp sources.list sources.list_default
> sources.list
cat >> sources.list << EOF
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
EOF
apt-get update
apt-get upgrade
安装所需依赖包
apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg2
3、添加本地域名解析
cat >> /etc/hosts << EOF
16.32.15.123 k8s-master-1
16.32.15.124 k8s-node-1
EOF
修改主机名,请复制到对应服务器执行
hostnamectl set-hostname k8s-master-1 && bash
hostnamectl set-hostname k8s-node-1 && bash
4、安装 ntpdate
保持服务器时间一致
apt install ntpdate
ntpdate ntp1.aliyun.com
配置定时任务,每天凌晨1点自动同步时间
crontab -e
0 1 * * * ntpdate ntp1.aliyun.com
Ctrl+c
Ctrl+x
Y
Enter
进行保存退出
验证定时任务是否配置成功
crontab -l
5、关闭交换分区
swapoff --all
禁止开机自启动swap交换分区
sed -i -r '/swap/ s/^/#/' /etc/fstab
6、安装Docker
把Key添加到本地trusted数据库中
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
添加Docker仓库
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
配置Docker驱动
cat <<EOF | tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
启动Docker && 加入开机自启动
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
systemctl enable --now docker
systemctl status docker
三、安装kubeadm(所有节点同步操作)
1、配置国内yum源,安装前提依赖
apt-get update && apt-get install -y apt-transport-https curl
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF
安装依赖包
apt-get update && apt-get install -y apt-transport-https curl
执行中报错:
解决方法:
注意:这里的KEY不唯一,我上面图片红圈住了,复制你的KEY再执行
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
apt-get update && apt-get install -y apt-transport-https curl
2、安装 kubeadm、kubelet、kubectl
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
添加自启动
systemctl enable kubelet
标记指定软件包为保留(held back),阻止软件自动更新
apt-mark hold kubelet kubeadm kubectl
四、初始化K8S集群(master节点操作)
kubeadm init \
--apiserver-advertise-address 16.32.15.123 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--ignore-preflight-errors=SystemVerification
初始化参数信息解释:
-
image-repository:指定国内阿里云的镜像源
-
pod-network-cidr: pod网段
-
service-cidr: service网段
-
apiserver-advertise-address: apiserver地址
-
ignore-preflight-errors:忽略检查的一些错误
由于kubernetes默认使用CA证书,所以需要为kubectl配置证书才可以访问到Master
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
测试kubectl
命令是否可以使用
kubectl get node
五、添加Node节点到K8S集群中
1、kubeadm命令获取加入集群的token
(master节点执行)
kubeadm token create --print-join-command
kubeadm join 16.32.15.123:6443 --token kczwmr.x2ekr2pjq5iuhquh --discovery-token-ca-cert-hash sha256:2c8b60dfb13094634cd1476c902dd08e23042a1fb0d23f998c361d30655071f1
2、将获取到加入集群的token
复制到Node节点即可!(node节点执行)
kubeadm join 16.32.15.123:6443 --token kczwmr.x2ekr2pjq5iuhquh --discovery-token-ca-cert-hash sha256:2c8b60dfb13094634cd1476c902dd08e23042a1fb0d23f998c361d30655071f1
3、查看集群节点信息(master节点执行)
kubectl get node
OK,上图可以看到节点成功加入K8S集群中。
六、安装Calico网络插件
由于calico官方在国外,下载比较慢毕竟隔着一道墙,我将calico.yaml
文件下载好,放到了国内gitee
上面,下面使用国内地址下载calico.yaml
文件,请知晓!
master节点执行:
wget -O /root/calico.yaml https://gitee.com/qinziteng/K8S/raw/master/YMAL/calico.yaml
kubectl apply -f calico.yaml
查看集群Pod状态:
kubectl get pods -n kube-system
查看集群Node节点状态:
kubectl get node
如上如 表示无误,如果还是未就绪状态,需要稍微等待一会~
七、测试CoreDNS可用性
1、创建测试容器
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
2、测试是否可以正常解析
nslookup kubernetes.default.svc.cluster.local
如上图所示可以正常解析,至此表示 基于Ubuntu20.04操作系统搭建K8S1.23版本集群 已成功部署并且无误!