Coffee_Candy

36 分类: nodejs后端开发,cocos游戏开发,宝塔nodejs后端配置篇,C++boost后端

Centos+K8S+Containerd,安装部署

安装kubelet, kubeadm, kubectl

# 创建仓库定义文件
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF

调用

sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
sudo swapoff -a
sudo systemctl start kubelet

下载containerd

# 安装 containerd
sudo yum install -y containerd

# 配置 containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

# 重启 containerd 并使用 systemd 作为 cgroup driver
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# 启动并启用 containerd
sudo systemctl enable containerd
sudo systemctl start containerd

配置内核参数

配置低的建议开启swap,不然负载会很高

# 创建 2G swap 文件
fallocate -l 2G /swapfile
# 设置权限(必须 600,防止安全问题)
chmod 600 /swapfile
# 格式化成 swap 空间
mkswap /swapfile
# 启用 swap
swapon /swapfile
# 设置开机自动挂载
grep -q "swapfile" /etc/fstab || echo "/swapfile none swap sw 0 0" >> /etc/fstab
# 调整 swap 策略,避免频繁换页
sysctl -w vm.swappiness=10
grep -q "vm.swappiness" /etc/sysctl.conf || echo "vm.swappiness=10" >> /etc/sysctl.conf
# 查看效果
free -h
swapon -s
# 加载必要的内核模块
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-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 应用配置
sudo sysctl --system

验证安装成功

# 检查 kubelet 版本
kubelet --version

# 检查 kubeadm 版本
kubeadm version

# 检查 kubectl 版本
kubectl version --client

初始化集群

注意一点hostname,改成你的本机ip

cp /etc/hosts /etc/hosts.bak   # 先备份
cat <<EOF > /etc/hosts
本机ip   你的hostname
127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain
EOF
kubeadm init \
  --apiserver-advertise-address=改成你的本机ip \
  --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
  --kubernetes-version v1.29.0 \
  --pod-network-cidr=10.244.0.0/16 \
  --service-cidr=10.96.0.0/12

出现这个表示成功
2025-08-26T20:49:49.png
如果是出现etc和apiserver的问题,就看日志,报错贴给ai
一定注意init一旦timeout之后马上关停kubelet
否则负载会因为持续的失败访问而飙升,导致ssh连接中断并长时间无法响应连接

systemctl stop kubelet

默认文件一般是不会有问题的,有问题建议重新生成那些文件

systemctl stop kubelet
rm -f /etc/kubernetes/manifests/*.yaml
kubeadm reset -f
rm -rf /var/lib/etcd
crictl ps -a
然后再init

记得每次去删干净init失败的文件和节点
crictl ps -a 出现这些就是成功
2025-08-27T22:46:40.png

配置 kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

下载kube-flannel.yml

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

直接去https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml下载下来
然后vim kube-flannel.yml 贴上去 再kubectl apply -f kube-flannel.yml

pod初始化和查看

kubectl get pods -n kube-system

出现全部running就成功了
2025-08-27T22:30:48.png
可能出现的问题是cni不完全导致的codedns卡在ContainerCreating
查看crictl ps -a
发现 Exited install-cni
就是cni没下下来,那么就是要重新下载,建议用我下面的方法手动下载
2025-08-27T22:48:37.png

kubectl describe pod coredns -n kube-systemem
把结果丢给ai如果是就按照要求补全cni

如果curl无法下载
可以去https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz直接下载然后上传到服务器/opt/cni/bin然后解压
2025-08-27T22:54:56.png
解压完之后查看kubectl get pods -n kube-system 按道理来说应该就ok了
2025-08-27T22:55:20.png
查看全部kubectl get all -A
2025-08-27T23:00:06.png

#none

作者: Coffee_Candy

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

评论已关闭