Debian12 安装kubernetes1.28
部署kubernetes
设别基础配置标准
- Minimal Installed Debian 12 /11
- 2 CPU / vCPU
- 2 GB RAM
- 20 GB free disk space
- Sudo User with Admin rights
- Stable Internet Connectivity
- Ensure that each node can communicate with the others via a reliable network connection.
1. 设置hostname和hosts文件
sudo hostnamectl set-hostname "master" // Run on master node
sudo hostnamectl set-hostname "node1" // Run on 1st worker node
sudo hostnamectl set-hostname "ndoe2" // Run on 2nd worker node
/etc/hosts 配置
10.0.8.2 master
10.0.0.6 node1
10.0.8.15 node2
2. 关闭所有节点的swap
目的:1. 平滑运行 2. 让内存泄漏的容器快速死亡
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
debian 非root下可能没有设置/usr/sbin 的环境变量,导致无法执行一些命令,设置下即可。
3. 添加防火墙规则
4. 安装Container
安装前所有节点设置内核参数
$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
执行 sudo sysctl --system
使得参数修改生效
安装Container
sudo apt update
sudo apt -y install containerd
在所有节点生成导入默认配置
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
使用SystemdCgroup配置,将 ‘SystemdCgroup = false’ 修改为 ‘SystemdCgroup = true‘
sudo vi /etc/containerd/config.toml
重启服务使配置生效
sudo systemctl restart containerd
sudo systemctl enable containerd
5. 添加kubernetes源
安装工具
sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
添加存储库
echo "deb [trusted=yes] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
6. 安装kubelet kubeadn kubectl,并固定版本
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
7. 使用 Kubeadm 安装 Kubernetes 集群
我选择生成配置文件,通过配置文件初始化
kubeadm config print init-defaults > init.yaml
advertiseAddress: #修改为master节点的ip
......
node:修改为master的hostname
如果初始化正常, 控制台会提示执行以下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 在节点执行后加入集群
kubeadm join 10.0.8.2:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:186e7256966f0e2b3485a3b3ab15a0f1357195745e3d2fa6e9f386cfc24ecc5d
运行以下 kubectl 命令来获取节点和集群信息,
kubectl get nodes
kubectl cluster-info
8. 使用 Calico 设置 Pod 网络
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
kubectl apply -f calico.yaml
如果有防火墙,则开放calico端口
sudo ufw allow 179/tcp
sudo ufw allow 4789/udp
sudo ufw allow 51820/udp
sudo ufw allow 51821/udp
sudo ufw reload
过几分钟后,验证calico状态
kubectl get pods -n kube-system
9. 验证集群
启nginx deployment测试
kubectl create deployment nginx-app --image=nginx --replicas 2
kubectl expose deployment nginx-app --name=nginx-web-svc --type NodePort --port 80 --target-port 80
执行kubectl describe svc nginx-web-svc
得到如下:
使用curl命令测试curl http://node1:31743
热门相关:如意小郎君 我能看到隐藏机缘 超级英雄 闪婚总裁很惧内 嫁入豪门后我养崽盘大佬