基于Ubuntu20.04安装k8sv1.28.0集群
修改默认配置,打开文件 vim /etc/containerd/config.toml。可以成功看到一个控制面节点,因为还未安装网络插件,所以状态是 NotReady。注:k8s自从v1.24版本后,默认容器运行时改成了containerd。接下来,标记指定软件包为保留(held back),阻止软件自动更新。然后再执行 apt-get update 就可以正确执行了。注:节点加入集群的命令也可以
·
一、环境准备
1.1 实验规划
本次安装基于阿里云购买的三台云主机,规划如下:
1 台 master 节点:172.19.189.51
2 台 worker 节点:172.19.189.52 和 172.19.189.53
1.2 环境配置
- 设置主机名
分别设置三台主机名为 k8s-master、k8s-node1 和 k8s-node2,目的是为了方便识别。
# 设置 master 主机名
hostnamectl set-hostname k8s-master && bash
# 设置 worker 主机名
hostnamectl set-hostname k8s-node1 && bash
hostnamectl set-hostname k8s-node2 && bash
- 安装基础软件包
后续安装会依赖到这些包,因此提前安装
apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg2
- 设置apt key
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
- 关闭交换分区
swapoff -a
二、安装容器运行时
注:k8s自从v1.24版本后,默认容器运行时改成了containerd
- 安装 containerd
sudo apt-get install containerd -y
- 配置containerd
# 创建目录
mkdir -p /etc/containerd
# 生成 containerd 默认配置
containerd config default > /etc/containerd/config.toml
修改默认配置,打开文件 vim /etc/containerd/config.toml
1. 把 SystemdCgroup = false 修改成 SystemdCgroup = true
2. 把 sandbox_image = "k8s.gcr.io/pause:3.8"修改成 sandbox_image="registry.aliyuncs.com/google_containers/pause:3.7"
- 配置 containerd 开机启动,并启动 containerd
systemctl enable containerd --now
- 配置 containerd 运行时
# 配置文件
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
# 重启 containerd
systemctl restart containerd
- 配置 containerd 镜像加速器
# 编辑 vim /etc/containerd/config.toml 文件,将 config_path 修改成如下目录:
config_path = "/etc/containerd/certs.d"
- 添加配置
# 创建目录
mkdir /etc/containerd/certs.d/docker.io/ -p
# vim /etc/containerd/certs.d/docker.io/hosts.toml,添加以下配置
[host."https://ysbwb3ow.mirror.aliyuncs.com",host."https://registry.docker-cn.com"]
capabilities = ["pull"]
# 重启 containerd
systemctl restart containerd
三、安装k8s
- 配置 k8s 源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF
- 更新 apt 源
apt-get update
注,如果出现以下错误:
解决方案
# 执行命令,最后的 key 要用自己错误提示的,如上面截图
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
然后再执行 apt-get update 就可以正确执行了。
- 安装指定版本 k8s
apt-get install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00
接下来,标记指定软件包为保留(held back),阻止软件自动更新
apt-mark hold kubelet kubeadm kubectl
- 初始化 k8s 控制面,即 master 节点
kubeadm init --apiserver-advertise-address 172.19.189.51 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification --kubernetes-version 1.28.0
参数说明:
- –apiserver-advertise-address 为 api-server 地址,需要指定自己的 master 节点 ip 地址
- –image-repository 为镜像仓库地址,这里指定为阿里云的镜像仓库地址
- –pod-network-cidr 为 pod 的 ip 地址分配网段
- –ignore-preflight-errors 为指定忽略的预检查错误
- –kubernetes-version 为指定 k8s 的版本
安装完成后,出现以下信息:
按照上面红框提示,执行该命令,目的是配置 kubectl 可以操作集群:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
执行查看集群节点命令:
kubectl get nodes
可以成功看到一个控制面节点,因为还未安装网络插件,所以状态是 NotReady
- 添加工作节点到集群
# 在其他两个 worker 节点上执行上面命令
kubeadm join 172.19.189.51:6443 --token l3xfad.s4x7tlo49yz5c7kk \
--discovery-token-ca-cert-hash sha256:d8f68f8fb10cae6d286863f5641eefde12c1797bbf2fba59fe1e5bb2154c4ab4
注:节点加入集群的命令也可以使用下面命令生成
kubeadm token create --print-join-command
添加成功后显示如下信息
再次查看集群节点,可以看到三个节点:
四、安装网络插件
- 下载 calico 部署文件
wget -O calico.yaml https://docs.projectcalico.org/manifests/calico.yaml
- 部署 calico
kubectl apply -f calico.yaml
- 查看 calico 组件是否部署成功
kubectl get po -n kube-system
需要 calico 相关组件全部为 running 状态
- 查看集群节点状态是否已经 Ready
kubectl get nodes
可以看到,集群节点全部Ready
五、验证集群网络
- 创建一个 pod,并进入 Pod
kubectl run busybox --image docker.io/library/busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh
验证一:ping 百度域名
ping www.baidu.com
验证二:解析集群默认域名
nslookup kubernetes.default.svc.cluster.local
可以看出,集群网络 OK。
本专栏知识点是通过<零声教育>的系统学习,进行梳理总结写下文章,对云原生/c/c++linux课程感兴趣的读者,可以点击链接,查看详情,链接: 传送门
更多推荐
已为社区贡献2条内容
所有评论(0)