ubuntu22.4部署kubernetes1.31.0
一、准备阶段:
服务器资源规划
cpu | 内存 | 硬盘 | 角色 | 主机名 | ip |
---|---|---|---|---|---|
2c | 3.3G | 18G | master | k8s-master01 | 192.168.71.111 |
2c | 3.3G | 18G | worker | k8s-worker01 | 192.168.71.112 |
2c | 3.3G | 18G | worker | k8s-worker02 | 192.168.71.113 |
二、主机基础配置:
step 1:修改主机名
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-worker01
hostnamectl set-hostname k8s-worker02
step 2:配置hosts
vim /etc/hosts
192.168.71.111 k8s-master01
192.168.71.112 k8s-worker01
192.168.71.113 k8s-worker02
验证
ping -c 2 k8s-master01
step 3:修改时区,同步时间。
apt install ntpdate
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate cn.pool.ntp.org
crontab -e
0 0 * * * ntpdate cn.pool.ntp.org
step 4:配置内核转发和网桥过滤。
添加配置文件
cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
加载模块
modprobe overlay
modprobe br_netfilter
添加网桥过滤及内核转发配置文件
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
安装Ipset及ipvsadm
sudo apt -y install ipset ipvsadm
配置ipvsadm模块,添加需要添加的模块
cat << EOF | tee /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
编写脚本,加载模块
cat << EOF | tee ipvs.sh
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod +x ipvs.sh
./ipvs.sh
step 5:关闭swap分区,注释掉/etc/fstab中的swap部分。
swapoff -a
三、容器运行时安装:
step 6:下载containerd并上传到服务器,下载地址https://github.com/containerd/containerd/releases。
mkdir /opt/software
chmod 777 software
step 7:安装containerd
tar -zxvf cri-containerd-1.7.20-linux-amd64.tar.gz -C /
step 8:配置containerd
创建文件夹
mkdir /etc/containerd
创建配置文件
containerd config default > /etc/containerd/config.toml
修改config.toml的第67行,sandbox_image = "registry.k8s.io/pause:3.8"改成registry.aliyuncs.com/google_containers/pause:3.9,第139行SystemdCgroup = false改成SystemdCgroup = true。
vim /etc/containerd/config.toml
:set nu
registry.aliyuncs.com/google_containers/pause:3.9
SystemdCgroup = true
step 9:配置镜像加速
新版本的containerd镜像仓库配置都是建议放在一个单独的文件夹当中,并且在/etc/containerd/config.toml配置文件当中打开config_path配置,指向镜像仓库配置目录即可。这种方式只需要在第一次修改/etc/containerd/config.toml文件打开config_path配置时需要重启containerd,后续我们增加镜像仓库配置都无需重启containerd,非常方便。
在config.toml的第162行添加目录。
vim /etc/containerd/config.toml
config_path = "/etc/containerd/certs.d"
创建docker加速文件
mkdir -p /etc/containerd/certs.d/docker.io
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://dockerpull.com"]
capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
capabilities = ["pull", "resolve"]
[host."https://hub.nat.tf"]
capabilities = ["pull", "resolve"]
EOF
创建k8s加速文件
mkdir -p /etc/containerd/certs.d/registry.k8s.io
tee /etc/containerd/certs.d/registry.k8s.io/hosts.toml << 'EOF'
server = "https://registry.k8s.io"
[host."https://k8s.m.daocloud.io"]
capabilities = ["pull", "resolve", "push"]
EOF
step 10:添加开机启动
systemctl enable --now containerd
step 11:查看containerd版本
containerd --veriosn
四、K8S集群部署
step 12:配置K8S集群软件apt源
先添加公钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
添加阿里云的镜像源
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新apt索引
apt-get update
step 13:K8S集群软件的安装
查看kubeadm可用版本列表
apt-cache policy kubeadm
安装指定版本
apt-get install -y kubelet=1.31.0-1.1 kubeadm=1.31.0-1.1 kubectl=1.31.0-1.1
版本锁定
apt-mark hold kubelet kubeadm kubectl
修改kubelet参数
vim /etc/default/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
设置kueblet开机自启动
systemctl enable kubelet
step 14:K8S集群初始化(mater节点)
创建目录,生成初始化配置文件,第12行改成advertiseAddress: 192.168.71.111, 第18行改成k8s-master01,在46行下加一行podSubnet: 10.244.0.0/16
mkdir /opt/software/init
kubeadm config print init-defaults > /opt/software/init/kubeadm-init.yaml
vim /opt/software/init/kubeadm-init.yaml
查看镜像列表
kubeadm config images list --config /opt/software/init/kubeadm-init.yaml
下载镜像
kubeadm config images pull --config /opt/software/init/kubeadm-init.yaml
查看已下载的镜像列表
crictl images
执行初始化
kubeadm init --config=/opt/software/init/kubeadm-init.yaml --upload-certs --v=9
按照提示操作
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看集群token值
kubeadm token create --print-join-command
step 15:worker加入集群(worker节点)
kubeadm join 192.168.71.111:6443 --token 84dglb.vl7ztqif8gds1o7i --discovery-token-ca-cert-hash sha256:45edd67fb778e71e803d19fbbe456b6edf37c7952fae106f18dcbae4c5f45083
查看节点状态,状态全是notready。
kubectl get nodes
五、部署网络插件Calico(常用的有flannel和calico)。
step 16:官网的地址https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart
直接复制官网的命令到master执行
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.2/manifests/tigera-operator.yaml
执行以后查看命名空间,多了一个tigera-operator
kubectl get ns
查看这个命名空间下创建的pod,状态为running
kubectl get pods -n tigera-operator
下载yaml文件
wget https://raw.githubusercontent.com/projectcalico/calico/v3.28.2/manifests/custom-resources.yaml
修改custom-resources.yaml的第13行cidr: 10.244.0.0/16
vim custom-resources.yaml
创建calico
kubectl create -f custom-resources.yaml
查看所有pod的创建情况,都已经running。
kubectl get pods -A
查看node状态,此时已经是ready状态
kubectl get nodes
EOF
原文地址:https://blog.csdn.net/weixin_45251630/article/details/142975013
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!