linuxkubernetes+ctr部署
TheStoneFishkubernetes+ctr部署
主机名 |
角色 |
master |
master |
worker01 |
node |
worker02 |
node |
一、准备工作(以下所有在master和node上执行)
1、关闭防火墙
2、修改hostname
k8s会使用实例的hostname
作为节点名称,因此有必要为每个实例取一个描述性较好的名称。
3、确定mac地址和product_uuid的唯一性
因为kubernetes会使用mac地址和product_uuid来唯一集群中的节点
查看mac地址是否唯一
查看product_uuid是否唯一
1
| cat /sys/class/dmi/id/product_uuid
|
4、关闭swap空间
禁用交换空间 -a表示所有的交换空间
清除fstab 不然下次启动还会挂载 swap分区
注释掉挂载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转发功能
重新加载系统配置文件(/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 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上面输入查看节点