kubernetes+ctr部署

kubernetes+ctr部署

主机名 角色
master master
worker01 node
worker02 node

一、准备工作(以下所有在master和node上执行)

1、关闭防火墙

2、修改hostname

k8s会使用实例的hostname作为节点名称,因此有必要为每个实例取一个描述性较好的名称。

1
vim /etc/hostname

3、确定mac地址和product_uuid的唯一性

因为kubernetes会使用mac地址和product_uuid来唯一集群中的节点
查看mac地址是否唯一

1
ip a

查看product_uuid是否唯一

1
cat /sys/class/dmi/id/product_uuid

4、关闭swap空间

禁用交换空间 -a表示所有的交换空间

1
swapoff -a

清除fstab 不然下次启动还会挂载 swap分区

1
vim /etc/fstab

注释掉挂载swap的就行了

5、修改系统配置

1
2
3
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward=1
EOF

net.ipv4.ip_forward=1开启主机的ip转发功能

1
sysctl --system

重新加载系统配置文件(/etc/sysctl.d/)

二、安装软件包(以下所有在master和node上执行)

1、安装基础软件包

1
apt install -y apt-transport-https ca-certificates curl

apt-transport-http 用于使用https下载软件包
ca-certificates 用于验证证书
curl 下载文件

2、添加key并添加安装源

将下载下来的key添加到apt(这里的-用于将管道符前面的输出用于这里的输入,占位符)

1
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

添加安装源

1
2
3
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

3、安装软件包(每台服务器上执行)

更新源

1
apt update

安装软件包

1
apt install -y kubeadm=1.27.0-00 kubelet=1.27.0-00 kubectl=1.27.0-00

kubeadm:用来初始化集群的指令。
kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
kubectl:用来与集群通信的命令行工具。
这三个软件包的版本应该保持一致或相差不大

锁定版本(禁止apt更改软件包,更新,卸载)

1
apt-mark hold kubeadm kubelet kubectl

三、配置kubernetes(在master)

1、配置containerd(1.24以上可以忽略)

2、导出默认配置文件

1
containerd config default > /etc/containerd/config.toml

3、配置镜像

因为containerd配置中使用的是国外的镜像,国内无法正常访问,会导致无法下载pause
1.24以上用了CRI sandbox(pause) image的配置支持,通过kubeadm init –image-repository设置的镜像地址,不再会传递给cri运行时去下载pause镜像

1
vim /etc/containerd/config.toml

修改镜像地址

1
sandbox_image="registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"

4、配置cgroup(可选)

将SystemdCgroup改为true
当将 SystemdCgroup 设置为 true 时,ctr 将使用 Systemd Cgroup driver 作为容器运行时的默认 Cgroup 驱动程序。这意味着创建的容器将使用 Systemd Cgroup 来管理和限制资源,如 CPU、内存、磁盘等。

5、初始化控制平面

在master中执行这个命令初始化

1
2
3
sudo kubeadm init \
--kubernetes-version=v1.27.0 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers

–kubernetes-version=v1.27.0 指定版本为1.27.0,会根据这个版本来下载组件
–image-repository registry.cn-hangzhou.aliyuncs.com/google_containers 使用阿里云源用于初始化过程中拉取
如果安装成功会提示
Your Kubernetes control-plane has initialized successfully!
接下来需要创建一些文件

1
2
3
mkdir -p \$HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf \$HOME/.kube/config
sudo chown $(id -u):$(id -g) \$HOME/.kube/config

在刚刚输出的信息中有一行信息用于节点加入网络(在节点中输入)

1
2
kubeadm join 192.168.193.68:6443 --token ul7wj9.c6z4aqgxx16isvay \
--discovery-token-ca-cert-hash sha256:601fb6d7afdfaa3214c479396cb314610ebf3ce5d6f0e61da684b52d89d3fadb

在master上面输入查看节点

1
kubectl get node