【Kubernetes部署篇】基于Ubuntu20.04操作系统搭建K8S1.23版本集群

一、集群架构规划信息

  • pod网段:10.244.0.0/16
  • service网段:10.10.0.0/16
  • 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。

服务器信息:

主机名IP地址操作系统
k8s-master-116.32.15.12320.04.1-Ubuntu
k8s-node-116.32.15.12420.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版本集群 已成功部署并且无误!

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神奇的海马体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值