How to Install Kubernetes on Ubuntu 24.04

Kubernetes 是一个免费的开源容器编排工具,它允许基于容器的应用程序的自动化部署、扩展和管理。

我们将介绍如何使用 Kubeadm 逐步在 Ubuntu 24.04 上安装 Kubernetes

此次演示中,我们将使用以下三个 Ubuntu 24.04 实例

  • Instance 1 : Master Node (k8s-master-noble 192.168.1.120)
  • Instance 2 : Worker Node (k8s-worker01-noble 192.168.1.121)
  • Instance 3 : Worker Node (k8s-worker02-noble 192.168.1.122)

1) 设置 Host Name 更新 hosts 文件

登录到各个主机,并使用 hostnamectl 命令设置它们各自的主机名。

$ sudo hostnamectl set-hostname "k8s-master-noble"      // Master Node
$ sudo hostnamectl set-hostname "k8s-worker01-noble"    // Worker Node 1
$ sudo hostnamectl set-hostname "k8s-worker02-noble"    // Worker Node 2

将以下行添加到每个实例上的 /etc/hosts 文件中。

192.168.1.120  k8s-master-noble
192.168.1.121  k8s-worker01-noble
192.168.1.122  k8s-worker02-noble

2) 禁用 swap,加载内核模块

在每个实例上运行以下命令来禁用交换空间,这样 Kubernetes 集群才能顺利工作。

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

使用 modprobe 命令加载以下内核模块。

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

要永久加载这些模块,请创建包含以下内容的文件。

$ sudo tee /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

接下来,添加像 IP 转发这样的内核参数。创建一个文件,并使用 sysctl 命令加载参数。

$ sudo tee /etc/sysctl.d/kubernetes.conf <<EOT
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOT

运行以下命令,加载上述内核参数。

$ sudo sysctl --system

3) 安装配置 Containerd

Containerd 为 Kubernetes 提供了容器运行时,在所有三个实例上安装 containerd

首先,安装容器依赖项

$ sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

接下来,使用以下命令添加 containerd 存储库。

$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/containerd.gpg
$ 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 containerd.io -y

接下来,配置 containerd,使其开始使用 SystemdCgroup 运行下面的命令。

$ 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

重新启动 containerd 服务,使上述更改生效。

$ sudo systemctl restart containerd

4) 添加 Kubernetes Package Repository

Kubernetes 软件包在 Ubuntu 24.04 的默认包存储库中不可用,所以要先添加它的存储库。在每个实例上运行这些步骤。

注意: 在撰写本文时,Kubernetes 的最新版本是 1.30 所以你可以根据自己的需求选择版本。

使用 curl 命令下载 Kubernetes 包存储库的公共签名密钥。

$ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/k8s.gpg

接下来,通过运行以下命令添加 Kubernetes 存储库。

$ echo 'deb [signed-by=/etc/apt/keyrings/k8s.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/k8s.list

5) 安装 Kubernetes 部件 (Kubeadm, kubelet & kubectl)

安装 Kubernetes 组件,在所有实例上运行以下 apt 命令。

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

6) 安装 Kubernetes

所有的先决条件都满足了,我们可以开始安装 Kubernetes 了。

在 master 节点上执行 Kubeadm 命令,仅用于初始化 Kubernetes 集群。

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

该命令将为 Kubernetes 集群拉取所需的镜像。成功执行此命令后,我们将得到如下所示的输出。

Install Kubernetes on Ubuntu 24.04

在上面的输出中,我们将获得一系列命令。例如:如何与 kubernetes 群集互动,如何添加 worker 节点到此群集。

在 master 节点上运行以下命令。

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

接下来,从输出中复制命令以连接 woker 节点,在两个 woker 节点上运行它。

$ sudo kubeadm join k8s-master-noble:6443 --token p3sdpk.zn0s060af0089ioa \
        --discovery-token-ca-cert-hash sha256:afa3d90b6cd8c5889fca12ea3e9b50659b933ab6c808e2906fd63bde5e695bfd

第一个 worker 节点的输出

Join-Worker01-Node-Kubernetes-Cluster-Ubuntu-24-04

第二个 worker 节点的输出

Join-Worker02-Node-Kubernetes-Cluster-Ubuntu-24-04

Now head back to the master node and run kubectl get nodes command to verify the status of worker nodes.

回到 master 节点,运行 kubectl get nodes 命令来验证 worker 节点的状态。

$ kubectl get nodes

Worker-Nodes-Status-Post-Join-Kuberntes-Cluster

输出确认 worker 节点已加入集群,但状态为 NotReady。我们需要在这个集群上安装 Network Add-on Plugin,例如:calico

7) 安装 Calico Network Add-on Plugin

仅在 master 节点上运行如下的命令

$ kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml

Install-Calico-Network-Addon-Plugin-Kuberntes

calico 安装成功后,节点状态会在 1 ~ 2 分钟后变为 Ready

$ kubectl get pods -n kube-system

Calico-Pods-Deployment-Status-Kubernetes

$ kubectl get nodes

Nodes-Status-Post-Installing-Calico-Kubernetes

上面的输出确认所有节点处于 Ready 状态。

8) 测试 Kubernetes Installation

为了测试 Kubernetes 安装,我们将创建基于 nginx 的部署,副本计数为 2,在 master 节点上执行下面的kubectl 命令。

$ kubectl create ns demo-app
$ kubectl create deployment nginx-app --image nginx --replicas 2 --namespace demo-app
$ kubectl get deployment -n demo-app
$ kubectl get pods -n demo-app

Nginx-Based-Deployment-Kubernetes-Ubuntu-24-04

接下来,使用 NodePort 类型公开此部署,运行如下命令

$ kubectl expose deployment nginx-app -n demo-app --type NodePort --port 80
$ kubectl get svc -n demo-app

Exposing-Deployment-Kubernetes-Ubuntu-24-04

现在,尝试使用 nodeport 访问您的应用程序,如下所示

$ curl http://<Any-worker-IP>:30336

Access-Nginx-App-Using-NodePort-Ubuntu-24-04

很好,我们可以使用 nodeport 在Kubernetes 集群之外访问基于 nginx 的应用程序,这确认 Kubernetes 安装成功。

我的开源项目

酷瓜云课堂-开源知识付费解决方案


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。