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

posted @ 2024-06-22 13:32  YueQAQ  阅读(29)  评论(0编辑  收藏  举报