快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
自己好久没接触k8s了,最近想部署一套k8s玩玩,有推荐的版本吗?请帮我出一份用kubeadm完整部署k8s(cri是containerd)的手把手文档,要求部署过程无Bug。机器是3台centos7系统(1 master节点,2 work节点)。
这份是CentOS 7 + kubeadm + containerd 手把手搭建 K8s 文档,严格按步骤走基本无坑,版本我给你选了稳定、兼容 CentOS 7 最好的版本。
1systemctl stop firewalld
2systemctl disable firewalld
3
4setenforce 0
5sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
6
7swapoff -a
8sed -i '/swap/s/^/#/' /etc/fstab1# Master 执行
2hostnamectl set-hostname k8s-master
3
4# Node1 执行
5hostnamectl set-hostname k8s-node1
6
7# Node2 执行
8hostnamectl set-hostname k8s-node2所有节点 /etc/hosts 加上(替换为你真实IP):
1192.168.x.100 k8s-master
2192.168.x.101 k8s-node1
3192.168.x.102 k8s-node2 1cat <<EOF | tee /etc/modules-load.d/k8s.conf
2overlay
3br_netfilter
4EOF
5
6modprobe overlay
7modprobe br_netfilter
8
9cat <<EOF | tee /etc/sysctl.d/k8s.conf
10net.bridge.bridge-nf-call-iptables = 1
11net.bridge.bridge-nf-call-ip6tables = 1
12net.ipv4.ip_forward = 1
13EOF
14
15sysctl --system1yum install -y yum-utils
2yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo1yum install -y containerd.io生成默认配置并修改:
1containerd config default > /etc/containerd/config.toml编辑 /etc/containerd/config.toml:
找到 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
下面的 SystemdCgroup 改为 true
1SystemdCgroup = true再把 sandbox_image 改为阿里云:
1sandbox_image = "registry.aliyuncs.com/k8s/pause:3.9"启动并开机自启:
1systemctl daemon-reload
2systemctl enable --now containerd1cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
2[kubernetes]
3name=Kubernetes
4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
5enabled=1
6gpgcheck=1
7gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
8exclude=kubelet kubeadm kubectl
9EOF1yum install -y kubelet-1.28.6 kubeadm-1.28.6 kubectl-1.28.6 --disableexcludes=kubernetes
2
3systemctl enable --now kubelet1kubeadm init \
2 --apiserver-advertise-address=192.168.x.100 \
3 --image-repository registry.aliyuncs.com/k8s \
4 --kubernetes-version v1.28.6 \
5 --service-cidr=10.96.0.0/12 \
6 --pod-network-cidr=10.244.0.0/16 \
7 --ignore-preflight-errors=Swap出现类似下面表示成功:
1Your Kubernetes control-plane has initialized successfully!
2
3Then you can join any number of worker nodes by running the following on each as root:
4
5kubeadm join 192.168.x.100:6443 --token xxx \
6 --discovery-token-ca-cert-hash sha256:xxx1mkdir -p $HOME/.kube
2cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3chown $(id -u):$(id -g) $HOME/.kube/config1kubectl apply -f https://docs.projectcalico.org/v3.26/manifests/calico.yaml等待所有 calico pod 运行:
1kubectl get pods -n kube-system -w用上面 kubeadm init 最后输出的 join 命令,示例:
1kubeadm join 192.168.x.100:6443 --token xxx \
2 --discovery-token-ca-cert-hash sha256:xxxMaster 执行:
1kubectl get nodes等一会所有节点状态为 Ready 就成功了。
节点一直 NotReady
journalctl -u kubeletcgroup 驱动不对
SystemdCgroup = true镜像拉不到
token 过期
1kubeadm token create --print-join-command如果你告诉我三台机器的真实内网IP,我可以直接给你生成可一键复制粘贴的完整命令版,连IP都帮你填好,你照着粘就能跑成一个无坑集群。
日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白