文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何用 Kubeadm 在 Debian 11 上安装 Kubernetes 集群

2024-12-01 01:39

关注

这份分步指南将向你展示如何使用 Kubeadm 工具在 Debian 11 上安装 Kubernetes 集群。

Kubernetes(k8s)集群包含主控节点和工作节点,用于运行容器化的应用程序。主控节点作为控制平面,工作节点为实际工作负载提供环境。

前置条件:

实验环境配置:

在本文中,我使用了 3 个 Debian 11 系统的节点,配置如下

事不宜迟,我们直接进入安装步骤。

1、设置主机名和更新 /etc/hosts 文件

在主控节点和工作节点上使用 ​​hostnamectl​​ 命令来设置主机名:

$ sudo hostnamectl set-hostname "k8s-master"       // 在主控节点运行$ sudo hostnamectl set-hostname "k8s-worker1"      // 在工作节点 1 运行$ sudo hostnamectl set-hostname "k8s-worker2"      // 在工作节点 2 运行

在所有节点的 ​​/etc/hosts​​ 文件末尾添加下面几行内容:

192.168.1.236       k8s-master192.168.1.237       k8s-worker1192.168.1.238       k8s-worker2

2、在所有节点上关闭交换分区

我推荐关闭交换分区,以便更丝滑地使用 ​​kubelet​​。在所有节点上执行以下命令来关闭交换分区:

$ sudo swapoff -a$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

3、配置 Kubernetes 集群相关的防火墙规则

如果你的操作系统防火墙是打开的,请分别在主控节点和工作节点允许以下的端口。

在主控节点,执行:

$ sudo ufw allow 6443/tcp$ sudo ufw allow 2379/tcp$ sudo ufw allow 2380/tcp$ sudo ufw allow 10250/tcp$ sudo ufw allow 10251/tcp$ sudo ufw allow 10252/tcp$ sudo ufw allow 10255/tcp$ sudo ufw reload

在工作节点,执行:

$ sudo ufw allow 10250/tcp$ sudo ufw allow 30000:32767/tcp$ sudo ufw reload

注意:如果你的 Debian 11 系统防火墙是关闭的,可以跳过此步骤。

4、在所有节点安装 Containerd 运行时

Containerd 是容器运行时的行业标准,所有节点必须安装 Containerd。

先在所有节点上配置如下的核心参数,再安装 Containerd。

$ cat <

运行如下命令,以使上面的更改生效:

$ sudo sysctl --system

现在,在所有节点上运行如下 ​​apt​​ 命令来安装 Conatinerd。

$ sudo apt  update$ sudo apt -y install containerd

在所有节点上运行如下命令来配置 Containerd:

$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

在所有节点上设置 ​​cgroupdriver​​ 为 ​​systemd​​,编辑 ​​/etc/containerd/config.toml​​ 文件,找到 ​​[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]​​ 部分,添加一行内容:​​SystemdCgroup = true​​:

$ sudo vi /etc/containerd/config.toml

systemdCgroup-true-containerd-config-toml

保存并退出文件。

在所有节点上重启并启用 ​​containerd​​ 服务:

$ sudo systemctl restart containerd$ sudo systemctl enable containerd

5、添加 Kubernetes Apt 库

执行以下命令,添加 Kubernetes Apt 库:

$ sudo apt install gnupg gnupg2 curl software-properties-common -y$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/cgoogle.gpg$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

6、在所有节点上安装 kubelet、kubectl 和 kubeadm

在所有节点上执行以下 ​​apt​​ 命令,安装 Kubernetes 集群组件,如 ​​kubelet​​、​​kubectl​​ 以及 ​​kubeadm​​。

$ sudo apt update$ sudo apt install kubelet kubeadm kubectl -y$ sudo apt-mark hold kubelet kubeadm kubectl

7、使用 Kubeadm 创建 Kubernetes 集群

现在我们可以创建 Kubernetes 集群了,在主控节点上执行以下命令:

$ sudo kubeadm init --control-plane-endpoint=k8s-master

命令输出:

Kubernetes-Control-Plane-Initialization-Debian11

出现以上内容,说明控制平面初始化成功。在输出中,有普通用户与集群交互的命令,也有把任何工作节点加入到集群的命令。

要开始与集群进行交互,请在主控节点上运行以下命令:

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

执行以下 ​​kubectl​​ 命令来获取节点和集群的信息:

$ kubectl get nodes$ kubectl cluster-info

以上命令的输出:

Nodes-Cluster-Info-Kubectl

通过执行 ​​kubeadm join​​ 命令来把两个工作节点加入到集群。

注意:请从 ​​kubeadm init​​ 命令的输出中复制完整的命令。在我的例子中,命令如下:

$ sudo kubeadm join k8s-master:6443 --token ta622t.enl212euq7z87mgj \   --discovery-token-ca-cert-hash sha256:2be58f54458d0e788c96b8841f811069019161f9a3dd8502a38c773e5c6ead17

在工作节点 1 上的输出如下:

Worker-Node1-Join-Kunernetes-Cluster

在工作节点 2 上的输出如下:

Worker-Node2-Join-Kubernetes-Cluster

在主控节点上执行以下命令,检查节点的状态:

$ kubectl get nodesNAME          STATUS     ROLES           AGE     VERSIONk8s-master    NotReady   control-plane   23m     v1.25.0k8s-worker1   NotReady             9m27s   v1.25.0k8s-worker2   NotReady             2m19s   v1.25.0$

为了使节点状态变为 ​​ready​​,我们需要安装容器荚Pod网络插件,如 Calico 或 flannel。

8、安装 Calico Pod 网络插件

在主控节点上执行以下命令安装 Calico:

$ kubectl apply -f https://projectcalico.docs.tigera.io/manifests/calico.yaml

输出:

Install-calico-pod-network-addon-debian11

在所有节点上执行以下命令,配置防火墙允许 Calico 的端口:

$ sudo ufw allow 179/tcp$ sudo ufw allow 4789/udp$ sudo ufw allow 51820/udp$ sudo ufw allow 51821/udp$ sudo ufw allow 4789/udp$ sudo ufw reload

执行以下命令检查下 Calico 的状态:

$ kubectl get pods -n kube-system

Calico-Pods-Status-Kuberenetes-Debian11

完美!现在再检查下节点状态:

Nodes-status-after-calico-Installation

非常棒!上面的输出说明主控节点和工作节点的状态都是 ​​ready​​。现在这个集群可以正常工作了。

9、检查 Kubernetes 集群安装是否正确

我们尝试通过 ​​deployment​​ 命令来部署基于 Nginx 的应用程序,来验证 Kubernetes 集群的安装是否正确。执行以下命令:

$ 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

以上命令的输出:

Nginx-Based-App-Kubernetes-Cluster-Debian11

使用以下的 ​​curl​​ 命令通过节点端口 30036 来访问基于 nginx 的应用程序。

注意:在 ​​curl​​ 命令中,可以使用两个工作节点任一的主机名。

$ curl http://k8s-worker1:30036

Access-Nginx-Based-App-via-NodePort-Kubernetes-Debian11

以上的输出说明我们可以正常访问基于 nginx 的应用程序了。

以上为全部内容。希望本文对你有用,参照本文可以在 Debian 11 上正常安装 Kubernetes 集群。

来源:Linux中国内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯