安装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
出现这个表示成功
如果是出现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 出现这些就是成功
配置 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就成功了
可能出现的问题是cni不完全导致的codedns卡在ContainerCreating
查看crictl ps -a
发现 Exited install-cni
就是cni没下下来,那么就是要重新下载,建议用我下面的方法手动下载
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然后解压
解压完之后查看kubectl get pods -n kube-system
按道理来说应该就ok了
查看全部kubectl get all -A
评论已关闭