如何在 Ubuntu 22.04 Jammy Jellyfish Linux 上安装 Kubernetes如何在 Ubuntu 22.04 Jammy Jellyfish Linux 上安装 Kubernetes如何在 Ubuntu 22.04 Jammy Jellyfish Linux 上安装 Kubernetes如何在 Ubuntu 22.04 Jammy Jellyfish Linux 上安装 Kubernetes
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 22.04 Jammy Jellyfish Linux 上安装 Kubernetes

Kubernetes 是容器编排领域的领先软件。 Kubernetes 通过管理集群来工作,集群只是一组用于运行容器化应用程序的主机。为了拥有一个 Kubernetes 集群,您至少需要两个节点——一个主节点和一个工作节点。当然,您可以根据需要添加任意数量的工作节点来扩展集群。

在本教程中,我们将部署一个由两个节点组成的 Kubernetes 集群,这两个节点都运行 Ubuntu 22.04 Jammy Jellyfish。在我们的集群中拥有两个节点是最基本的配置,但如果您愿意,您可以扩展该配置并添加更多节点。

在本教程中您将学习:

  • 如何安装 Docker

  • 如何安装 Kubernetes

  • 如何配置主节点和工作节点

  • 如何将工作节点加入 Kubernetes 集群

  • 如何在 Kubernetes 集群中部署 Nginx(或任何容器化应用程序)

设想

在我们深入研究之前,让我们先确定一下场景的细节。如上所述,我们的集群将有两个节点,这两个节点都运行 Ubuntu 22.04 Jammy Jellyfish。其中一个将是主节点,可以通过其主机名kubernetes-master轻松识别。第二个节点将是我们的工作节点,主机名为kubernetes-worker。

主节点将部署 Kubernetes 集群,工作节点只需加入该集群即可。由于 Kubernetes 集群旨在运行容器化软件,因此在集群启动并运行后,我们将部署一个 Nginx 服务器容器作为概念验证。

安装 Docker

这两个节点都需要安装 Docker,因为 Kubernetes 依赖于它。打开命令行终端并在主节点和工作节点上键入以下命令来安装 Docker:


$ sudo apt update
$ sudo apt install docker.io

Docker 安装完成后,使用以下命令启动服务并确保它在每次重新启动后自动启动:


$ sudo systemctl start docker
$ sudo systemctl enable docker

安装 Kubernetes

现在我们已经准备好安装 Kubernetes。就像到目前为止的所有其他命令一样,请确保您在两个节点上执行此操作。在 Kubernetes master 和worker 上,首先安装 apt-transport-https 包,这将允许我们在 Ubuntu 的存储库中使用 http 和 https。现在也是安装curl的好时机,因为我们稍后会需要它:


$ sudo apt install apt-transport-https curl

接下来,将 Kubernetes 签名密钥添加到两个系统:


$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

接下来,我们将添加 Kubernetes 包存储库。请注意,在撰写本文时,Ubuntu 16.04 Xenial Xerus 是最新的可用 Kubernetes 存储库。这最终应该被 Ubuntu 22.04 Jammy Jellyfish 取代,然后可以将以下命令从 xenial 更新为 jammy。


$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

现在我们可以安装 Kubernetes:


$ sudo apt install kubeadm kubelet kubectl kubernetes-cni

禁用交换内存

如果您的系统正在使用交换内存,Kubernetes 将拒绝运行。在继续之前,请确保主节点和工作节点已使用以下命令禁用交换内存:


$ sudo swapoff -a

该命令将禁用交换内存,直到系统重新启动,因此要使此更改持续存在,请使用 nano 或您喜欢的文本编辑器打开此文件:


$ sudo nano /etc/fstab

在此文件中,通过在 /swapfile 行前面添加 # 符号来注释掉该行,如下所示。然后,关闭该文件并保存更改。

设置主机名

接下来,确保所有节点都有唯一的主机名。在我们的场景中,我们使用主机名 kubernetes-master 和 kubernetes-worker 来轻松区分我们的主机并识别它们的角色。如果需要更改主机名,请使用以下命令:


$ sudo hostnamectl set-hostname kubernetes-master

在工作节点上:


$ sudo hostnamectl set-hostname kubernetes-worker

在打开一个新终端之前,您不会注意到终端中的主机名发生变化。最后,确保所有节点都有准确的时间和日期,否则您将遇到无效 TLS 证书的麻烦。

初始化 Kubernetes 主服务器

现在我们准备初始化 Kubernetes 主节点。为此,请在主节点上输入以下命令:


kubernetes-master:~$ sudo kubeadm init

Kubernetes主节点现已初始化。输出为我们提供了一个 kubeadm join 命令,稍后我们需要使用该命令将工作节点连接到主节点。因此,请记下此命令以供稍后使用。

上面的输出还建议我们以普通用户身份运行几个命令来开始使用 Kubernetes 集群。在主节点上运行这三个命令:


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

部署 Pod 网络

下一步是部署 Pod 网络。 Pod 网络用于主机之间的通信,是 Kubernetes 集群正常运行所必需的。为此,我们将使用 Flannel Pod 网络。在主节点上发出以下两个命令:


kubernetes-master:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubernetes-master:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

根据您的环境,可能只需要几秒钟或一分钟即可启动整个 flannel 网络。您可以使用 kubectl 命令来确认一切都已准备就绪:


kubernetes-master:~$ kubectl get pods --all-namespaces

当所有状态列都显示“正在运行”时,这表明一切都已完成部署并可以开始。

加入 Kubernetes 集群

现在我们的集群已准备好让工作节点加入。使用之前从 Kubernetes 主节点初始化输出中检索到的 kubeadm join 命令来加入 Kubernetes 集群:


kubernetes-worker:~$ sudo kubeadm join 192.168.1.220:6443 --token 1exb8s.2t4k3b5syfc3jfmo --discovery-token-ca-cert-hash sha256:72ad481cee4918cf2314738419356c9a402fb609263adad48c13797d0cba2341

返回 Kubernetes 主节点,使用以下命令确认 kubernetes-worker 现在是我们 Kubernetes 集群的一部分:


kubernetes-master:~$ kubectl get nodes

在 Kubernetes 集群上部署服务

现在我们准备将服务部署到 Kubernetes 集群中。在我们的示例中,我们将在新集群中部署 Nginx 服务器作为概念证明。在主节点上运行以下两个命令:


kubernetes-master:~$ kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml
kubernetes-master:~$ kubectl run --image=nginx nginx-server --port=80 --env="DOMAIN=cluster"
kubernetes-master:~$ kubectl expose deployment nginx-deployment --port=80 --name=nginx-http

您现在应该看到一个新的 nginx docker 容器部署在您的工作节点上:


kubernetes-worker:~$ sudo docker ps

您可以使用从 Kubernetes maser 节点发出的以下命令查看集群中运行的所有可用服务的运行列表:


kubernetes-master:~$ kubectl get svc

结束语

在本教程中,我们学习了如何设置 Kubernetes 以在 Ubuntu 22.04 Jammy Jellyfish 上部署容器化应用程序。我们设置了一个由两台主机(主机和工作程序)组成的基本集群,但如果需要,可以扩展到更多工作程序节点。

我们了解了如何配置 Docker 和其他先决条件,以及如何在新集群中部署 Nginx 服务器作为概念证明。当然,相同的配置可用于部署任意数量的容器化应用程序。

©2015-2025 艾丽卡 support@alaica.com