如何在 Ubuntu 22.04 上安装 Kubernetes 集群
您是否正在寻找有关如何在 Ubuntu 22.04 (Jammy Jellyfish) 上安装 Kubernetes 集群的简单指南?
本文的分步指南将向您展示如何使用 Kubeadm 命令逐步在 Ubuntu 22.04 上安装 Kubernetes 集群。
Kubernetes 是一个免费的开源容器编排工具,也称为 k8s。借助 Kubernetes,我们可以实现容器化应用的自动化部署、扩展和管理。
Kubernetes 集群由部署应用程序工作负载的工作节点和设置的主节点组成,这些主节点用于管理集群中的工作节点和 Pod。
在本指南中,我们使用一个主节点和两个工作节点。以下是每个节点的系统要求,
- 最小安装 Ubuntu 22.04
- 至少 2GB RAM 或更多
- 至少 2 个 CPU 内核/或 2 个 vCPU
- /var 上有 20 GB 可用磁盘空间或更多
- 具有管理员权限的 Sudo 用户
- 每个节点上的 Internet 连接
实验室设置
- 主节点:192.168.1.173 – k8smaster.example.net
- 第一个工作节点:192.168.1.174 – k8sworker1.example.net
- 第二个工作节点:192.168.1.175 – k8sworker2.example.net
OK,现在让我们进入 Kubernetes 集群的安装步骤
步骤 1) 设置主机名并在主机文件中添加条目
登录到主节点并使用 hostnamectl 命令设置主机名,
$ sudo hostnamectl set-hostname "k8smaster.example.net"
$ exec bash
在工作节点上,运行
$ sudo hostnamectl set-hostname "k8sworker1.example.net" // 1st worker node
$ sudo hostnamectl set-hostname "k8sworker2.example.net" // 2nd worker node
$ exec bash
在每个节点的 /etc/hosts 文件中添加以下条目
192.168.1.173 k8smaster.example.net k8smaster
192.168.1.174 k8sworker1.example.net k8sworker1
192.168.1.175 k8sworker2.example.net k8sworker2
步骤 2) 禁用 swap 并添加内核设置
在 swapoff 和sed 命令下执行以禁用 swap。确保在所有节点上运行以下命令。
$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^/(.*/)$/#/1/g' /etc/fstab
在所有节点上加载以下内核模块,
$ sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
为 Kubernetes 设置以下内核参数,在 tee 命令下运行
$ sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
重新加载上述更改,运行
$ sudo sysctl --system
步骤 3) 安装 containerd 运行时
在本指南中,我们为 Kubernetes 集群使用 containerd 运行时。因此,要安装 containerd,首先要安装它的依赖项。
$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
启用 docker 存储库
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
现在,运行以下 apt 命令来安装 containerd
$ sudo apt update
$ sudo apt install -y containerd.io
配置 containerd 以便它开始使用 systemd 作为 cgroup。
$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
$ sudo sed -i 's/SystemdCgroup /= false/SystemdCgroup /= true/g' /etc/containerd/config.toml
重启并启用容器服务
$ sudo systemctl restart containerd
$ sudo systemctl enable containerd
步骤 4) 为 Kubernetes 添加 apt 存储库
执行以下命令为 Kubernetes 添加 apt 存储库
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
注意:在编写本指南时,Xenial 是最新的 Kubernetes 存储库,但是当存储库可用于 Ubuntu 22.04 (Jammy Jellyfish) 时,您需要在 ‘apt-add-repository’ 命令中将 xenial 单词替换为 ‘jammy’。
步骤 5) 安装 Kubernetes 组件 Kubectl、kubeadm 和 kubelet
在所有节点上安装 kubectl、kubelet 和 Kubeadm 实用程序等 Kubernetes 组件。运行以下命令集,
$ sudo apt update
$ sudo apt install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
步骤 6) 使用 Kubeadm 命令初始化 Kubernetes 集群
现在,我们都准备好初始化 Kubernetes 集群了。仅从主节点运行以下 Kubeadm 命令。
$ sudo kubeadm init --control-plane-endpoint=k8smaster.example.net
上述命令的输出,
正如上面的输出确认控制平面已成功初始化。在输出中,我们还获得了一组与集群交互的命令,以及工作节点加入集群的命令。
因此,要开始与集群交互,请从主节点运行以下命令,
$ 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 cluster-info
$ kubectl get nodes
输出,
将两个worker节点加入集群,命令已经有输出,复制粘贴到worker节点上即可,
$ sudo kubeadm join k8smaster.example.net:6443 --token vt4ua6.wcma2y8pl4menxh2 /
--discovery-token-ca-cert-hash sha256:0494aa7fc6ced8f8e7b20137ec0c5d2699dc5f8e616656932ff9173c94962a36
来自两个工作节点的输出,
使用 kubectl 命令从主节点检查节点状态,
$ kubectl get nodes
正如我们所见,节点状态为“ NotReady ”,因此要使其处于活动状态。我们必须安装 CNI(容器网络接口)或网络插件,如 Calico、Flannel 和 Weave-net。
步骤 6) 安装 Calico Pod 网络插件
运行以下 curl 和 kubectl 命令从主节点安装 Calico 网络插件,
$ curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
$ kubectl apply -f calico.yaml
上述命令的输出如下所示,
验证 kube-system 命名空间中 pod 的状态,
$ kubectl get pods -n kube-system
输出,
完美,同时检查节点状态。
$ kubectl get nodes
太好了,上面确认节点是活动节点。现在,我们可以说我们的 Kubernetes 集群是正常运行的。
步骤 7) 测试 Kubernetes 安装
为了测试 Kubernetes 的安装,让我们尝试部署基于 nginx 的应用程序并尝试访问它。
$ kubectl create deployment nginx-app --image=nginx --replicas=2
检查 nginx-app 部署的状态
$ kubectl get deployment nginx-app
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-app 2/2 2 2 68s
$
将部署公开为 NodePort,
$ kubectl expose deployment nginx-app --type=NodePort --port=80
service/nginx-app exposed
$
运行以下命令查看服务状态
$ kubectl get svc nginx-app
$ kubectl describe svc nginx-app
上述命令的输出,
使用以下命令访问基于 nginx 的应用程序,
$ curl http://<woker-node-ip-addres>:31246
$ curl http://192.168.1.174:31246
输出,
太好了,上面的输出证实了基于 Nginx 的应用程序是可访问的。
这就是本指南的全部内容,希望您发现本指南对您有用。
如果还有什么疑问,请在下面的评论部分告诉我们。
The post 如何在 Ubuntu 22.04 上安装 Kubernetes 集群 first appeared on Linux迷.
共有 0 条评论