文章目录
环境
| Ip | 主机名 | cpu | 内存 |
|---|---|---|---|
| 192.168.10.12 | master01 | 4c | 6G |
| 192.168.10.13 | node1 | 4c | 6G |
| 192.168.10.14 | node2 | 4c | 6G |
| 组件 | 版本 |
|---|---|
| Ubuntu | Ubuntu 26.04 server |
| containerd | v2 2.2.2 |
| Kubernetes | v1.36.1 |
注k8sv1.36不要用docker做运行时,有bug
创完k8s群集后exec不进容器里
本文采用
containerd作为容器运行时
Calico作为CNI网络插件
kubeadm方式部署
99%的操作直接复制就行,命令都是测试过的。除了k8s初始化的token需要看自己的
操作步骤
修改主机名
master01(192.168.10.12)操作
hostnamectl set-hostname master01
node01(192.168.10.13)操作
hostnamectl set-hostname node01
node02(192.168.10.14)操作
hostnamectl set-hostname nde02
三台主机同时操作
配置阿里云yum源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.aliyun.com/ubuntu/ resolute main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ resolute-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ resolute-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ resolute-security main restricted universe multiverse
EOF
apt update
配置host域名解析
cat >> /etc/hosts << EOF
192.168.10.12 master01
192.168.10.13 node01
192.168.10.14 node02
EOF
cat /etc/hosts

关闭swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
free -h

加载内核模块并开启网络转发
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo 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
sudo sysctl --system
安装containerd
Ubuntu 26.04 的默认仓库中包含 containerd 包
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo sed -i "s|sandbox = 'registry.k8s.io/pause:3.10.1'|sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10.1'|g" /etc/containerd/config.toml
sudo sed -i "s|config_path = ''|config_path = '/etc/containerd/certs.d'|" /etc/containerd/config.toml
#配置镜像加速
cd /etc/containerd/certs.d
# docker.io
sudo mkdir -p docker.io
cat <<'EOF' | sudo tee docker.io/hosts.toml
server = "https://docker.io"
[host."https://docker.1ms.run"]
capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
capabilities = ["pull", "resolve"]
EOF
# registry.k8s.io
sudo mkdir -p registry.k8s.io
cat <<'EOF' | sudo tee registry.k8s.io/hosts.toml
server = "https://registry.k8s.io"
[host."https://k8s.m.daocloud.io"]
capabilities = ["pull", "resolve"]
EOF
# quay.io
sudo mkdir -p quay.io
cat <<'EOF' | sudo tee quay.io/hosts.toml
server = "https://quay.io"
[host."https://quay.m.daocloud.io"]
capabilities = ["pull", "resolve"]
EOF
# ghcr.io
sudo mkdir -p ghcr.io
cat <<'EOF' | sudo tee ghcr.io/hosts.toml
server = "https://ghcr.io"
[host."https://ghcr.m.daocloud.io"]
capabilities = ["pull", "resolve"]
EOF
# gcr.io
sudo mkdir -p gcr.io
cat <<'EOF' | sudo tee gcr.io/hosts.toml
server = "https://gcr.io"
[host."https://gcr.m.daocloud.io"]
capabilities = ["pull", "resolve"]
EOF
sudo systemctl restart containerd
sudo systemctl enable containerd
安装crictl(可选)
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.36.0/crictl-v1.36.0-linux-amd64.tar.gz
tar zxvf crictl-v1.36.0-linux-amd64.tar.gz -C /usr/local/bin
crictl version
安装k8s组件
mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key | \
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.36/deb/ /" |\
tee /etc/apt/sources.list.d/kubernetes.list
apt update
apt install -y kubelet=1.36.2-2.1 kubeadm=1.36.2-2.1 kubectl=1.36.2-2.1
apt-mark hold kubelet kubeadm kubectl
kubeadm version
kubectl version --client
kubelet --version

master01(192.168.10.12)操作
k8s群集初始化
kubeadm init \
--apiserver-advertise-address=192.168.10.12 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.36.2 \
--pod-network-cidr=172.16.0.0/16

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
node节点(192.168.10.13/14)操作
node节点加入k8s群集
token要跟k8s群集初始化的输出结果一样,不要复制我这个

kubeadm join 192.168.10.12:6443 --token 16vftw.lnioqd010c3n7tjn \
--discovery-token-ca-cert-hash sha256:ded58b64444094269951ce0f1cadc917b8e808accb1b16e3c0b1d6126419b3bf
验证
kubectl get nodes
NotReady是因为还没安装网络插件

kubectl get pod -A
coredns需要安装calico后才会running

master01(192.168.10.12)操作
安装calico网络插件
下载yaml文件并替换成国内镜像地址
wget https://gitee.com/mirrors/calico/raw/v3.30.3/manifests/calico.yaml
sed -i 's#docker.io/#docker.m.daocloud.io/#g' calico.yaml
grep "image:" calico.yaml

kubectl apply -f calico.yaml
kubectl get pod -A
等待5分钟左右

到这里k8s群集就搭建完了
总结
博客中很多命令原来都有注释方便理解,后面就全删了,一是一个部署也不需要太注意每条命令的作用,二是看博客的估计也不在意注释,都是直接复制粘贴(本人就是),三是这玩意直接问ai就行。写在博客里就有些冗余了。
如果部署中还有其他问题评论即可。

435

被折叠的 条评论
为什么被折叠?



