Ubuntu20.04 部署 k8s

一、基础环境配置

1、三台虚拟机修改 host、ip:

192.168.10.60(k8s 节点,控制平面)
192.168.10.61(k8s 节点)
192.168.10.62(k8s 节点)

vim /etc/hostname
vim /etc/netplan/00-installer-config.yaml
shutdown -h now
ping node61 #测试下

Ubuntu20.04 部署 k8s

2、修改Windows本机host

Ubuntu20.04 部署 k8s

二、安装 k8s

1、确保 k8s 在启动时加载内核模块 overlay 和 br_netfilter 两个内核模块:

printf "overlay\nbr_netfilter\n" >> /etc/modules-load.d/containerd.conf

2、立即加载 overlay 、br_netfilter 内核模块:

modprobe overlay
modprobe br_netfilter

3、配置 k8s 的网络:

printf "net.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\n" >> /etc/sysctl.d/99-kubernetes-cri.conf

Ubuntu20.04 部署 k8s

4、重新加载配置:

sysctl --system

Ubuntu20.04 部署 k8s

5、安装 containerd:

提示
k8s目前不推荐使用docker作为容器,推荐使用containerd。
wget https://github.com/containerd/containerd/releases/download/v1.7.13/containerd-1.7.13-linux-amd64.tar.gz -P /opt/software/
tar Cxzvf /usr/local /opt/software/containerd-1.7.13-linux-amd64.tar.gz
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -P /etc/systemd/system/
systemctl daemon-reload
systemctl enable --now containerd

6、安装 runc:

wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64 -P /opt/software/
install -m 755 /opt/software/runc.amd64 /usr/local/sbin/runc

Ubuntu20.04 部署 k8s

7、安装 cni 网络插件:

wget https://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgz -P /opt/software/
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin /opt/software/cni-plugins-linux-amd64-v1.4.0.tgz

8、修改 containerd 的配置并重启 containerd:

mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
vim /etc/containerd/config.toml
# 修改 SystemdCgroup 配置项的值为 true

systemctl restart containerd

9、关闭 swap(内存交换):

vim /etc/fstab

注释掉最后一行:

Ubuntu20.04 部署 k8s

10、更新 apt-get 并信任 k8s 官网链接:

apt-get update
apt-get install -y apt-transport-https ca-certificates curl gpg

mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/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.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

apt-get update

11、重启:

reboot

12、检查 swap 是否关闭,确保 swap 是 0:

free -m

13、下载 k8s 软件包:

apt-get install -y kubelet=1.29.1-1.1 kubeadm=1.29.1-1.1 kubectl=1.29.1-1.1
apt-mark hold kubelet kubeadm kubectl
提示
apt-mark hold kubelet kubeadm kubectl 命令的作用是将 kubelet、kubeadm 和 kubectl 这三个软件包标记为“保留”状态。这意味着这些软件包不会被系统自动升级或删除。

14、下面这些步骤仅仅需要在控制平面节点(第一台)执行:

# 这个命令会比较耗时,--pod-network-cidr 明确了 Kubernetes 集群中 Pod 网络的 IP 地址范围。
kubeadm init --pod-network-cidr 10.10.0.0/16 --kubernetes-version 1.29.1 --node-name node60

export KUBECONFIG=/etc/kubernetes/admin.conf

# add Calico 3.27.2 CNI 
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/custom-resources.yaml
# 将 CIDR 配置为 10.10.0.0/16
vim custom-resources.yaml
kubectl apply -f custom-resources.yaml

# 获取 worker 节点加入到集群的命令
kubeadm token create --print-join-command

Ubuntu20.04 部署 k8s
Ubuntu20.04 部署 k8s

15、在另外的两个 worker 节点执行上面获取到的将 worker 节点加入到集群的命令将当前节点加入到 k8s 集群中:

kubeadm join 192.168.10.60:6443 --token pecvqm.rlxcsywbvm2resvv \
        --discovery-token-ca-cert-hash sha256:fac6cb7a265dc30d7560517dc64debaf933592215a58a8912453f6a56bde7701

16、部署完毕,在主节点(控制平面)执行:kubectl get nodes,查询加入集群的节点。

Ubuntu20.04 部署 k8s

三、配套视频