【k8s部署】
·
CentOS 7 搭建 Kubernetes 1.34.3 集群(4节点)
集群规划
| 主机IP | 主机名 | 角色 |
|---|---|---|
| 172.31.1.241 | k8s-master01 | master |
| 172.31.1.242 | k8s-node01 | worker |
| 172.31.1.243 | k8s-node02 | worker |
| 172.31.1.244 | k8s-node03 | worker |
Kubernetes 版本:
1.34.3
容器运行时:
containerd
网络插件:
flannel
一、所有节点基础配置
以下操作需要在:
241
242
243
244
全部执行。
二、设置主机名
master
hostnamectl set-hostname k8s-master01
node1
hostnamectl set-hostname k8s-node01
node2
hostnamectl set-hostname k8s-node02
node3
hostnamectl set-hostname k8s-node03
三、配置 hosts
所有节点:
cat >> /etc/hosts << EOF
172.31.1.241 k8s-master01
172.31.1.242 k8s-node01
172.31.1.243 k8s-node02
172.31.1.244 k8s-node03
EOF
测试:
ping k8s-master01
四、关闭防火墙
所有节点:
systemctl stop firewalld
systemctl disable firewalld
五、关闭 SELinux
所有节点:
临时关闭:
setenforce 0
永久关闭:
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
sed -i 's/^SELINUX=permissive$/SELINUX=disabled/' /etc/selinux/config
六、关闭 swap
所有节点:
swapoff -a
永久关闭:
sed -ri 's/.*swap.*/#&/' /etc/fstab
验证:
free -m
Swap 应为:
0
七、配置内核参数
所有节点:
cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF
加载模块:
modprobe overlay
modprobe br_netfilter
配置 sysctl:
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
生效:
sysctl --system
八、同步时间
所有节点:
安装:
yum install -y chrony
启动:
systemctl enable chronyd
systemctl restart chronyd
验证:
chronyc sources
九、安装 containerd
所有节点:
安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker Repo
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 containerd
yum install -y containerd.io
生成配置
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
修改 systemd cgroup
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
配置 sandbox 镜像(国内推荐)
sed -i 's#registry.k8s.io/pause:3.8#registry.aliyuncs.com/google_containers/pause:3.10#g' /etc/containerd/config.toml
启动 containerd
systemctl daemon-reload
systemctl enable containerd
systemctl restart containerd
检查:
systemctl status containerd
十、安装 Kubernetes 组件
所有节点:
添加 Kubernetes Repo
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.34/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
安装 kubelet kubeadm kubectl
yum install -y kubelet-1.34.3 kubeadm-1.34.3 kubectl-1.34.3 --disableexcludes=kubernetes
启动 kubelet
systemctl enable kubelet
systemctl restart kubelet
十一、初始化 Master
仅在:
172.31.1.241
执行。
拉取镜像
kubeadm config images pull \
--kubernetes-version=v1.34.3 \
--image-repository registry.aliyuncs.com/google_containers
初始化集群
kubeadm init \
--apiserver-advertise-address=172.31.1.241 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.34.3 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
成功后会看到:
kubeadm join ...
保存下来。
十二、配置 kubectl
仅 master:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
验证:
kubectl get nodes
十三、安装 Flannel 网络插件
仅 master:
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
十四、Node 加入集群
在:
242
243
244
执行 master 初始化后生成的 join 命令。
类似:
kubeadm join 172.31.1.241:6443 \
--token xxxxxx.xxxxxxxxxxxxxxxx \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxx
十五、验证集群
master 执行:
kubectl get nodes
正常应该:
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready control-plane xx v1.34.3
k8s-node01 Ready <none> xx v1.34.3
k8s-node02 Ready <none> xx v1.34.3
k8s-node03 Ready <none> xx v1.34.3
十六、验证 Pod
kubectl get pod -A
所有 Pod 应为:
Running
十七、常见问题
1. kubelet 无法启动
查看日志:
journalctl -u kubelet -f
2. swap 未关闭
报错:
running with swap on is not supported
解决:
swapoff -a
3. Node NotReady
通常是 flannel 未启动。
查看:
kubectl get pod -A
4. containerd CRI 报错
重启:
systemctl restart containerd
systemctl restart kubelet
5. 查看集群信息
kubectl cluster-info
十八、安装 Metrics Server(推荐)
master:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
修改:
kubectl edit deployment metrics-server -n kube-system
增加:
- --kubelet-insecure-tls
验证:
kubectl top nodes
十九、开放 Master 调度(可选)
如果希望 Pod 也能调度到 master:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
二十、查看 Join Token
如果忘了 join 命令:
kubeadm token create --print-join-command
二十一、重置集群
节点执行:
kubeadm reset -f
删除残留:
rm -rf ~/.kube
rm -rf /etc/cni
rm -rf /var/lib/cni
rm -rf /var/lib/kubelet/*
rm -rf /etc/kubernetes
重启:
systemctl restart containerd
systemctl restart kubelet
二十二、验证测试 Pod
kubectl create deployment nginx --image=nginx
查看:
kubectl get pod -o wide
二十三、建议配置(生产环境)
建议:
- 使用 keepalived + haproxy 做高可用 master
- 使用 calico 替代 flannel
- 使用 ingress-nginx
- 使用 metrics-server
- 使用 prometheus + grafana
- 使用 local-path-provisioner 或 NFS CSI
二十四、版本查看
kubectl version
kubeadm version
kubelet --version
二十五、查看运行时
crictl info
ctr version
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)