诺诺博客

  • 概述
  • 环境说明
  • 更新系统
  • 设置主机名及添加DNS解析
  • 禁用交换文件
  • 添加内核模块
  • 开启IP转发
  • 将更改应用到内核
  • 设置Docker存储库
  • 安装containerd
  • 将systemd配置为组
  • 启动服务配置
  • 配置Kubernetes阿里云apt源
  • 安装Kubernetes
  • 初始化Kubernetes集群
  • 初始化Kubernetes出错
  • 初始化Kubernetes成功
  • 加入集群
  • 查看集群状态
  • 配置Pod网络
  • 验证Kubernetes
  • 创建测试部署
  •  主 页
  •  Linux
  •  微 软
  •  信 创
  •  虚 拟
  •  网 络
  •  生 活
  •  归 档
  •  友 链
  •  关 于

使用Kubeadm在Ubuntu 20.04中部署Kubernetes

  • 诺诺
  • 2024-12-01
  • 0

概述

了解如何从头开始在 Ubuntu 22.04 中安装最新的 Kubernetes 版本,包括配置主机和使用 kubeadm 进行更新。非常适合实验室环境!在本文中,我将使用 kubeadm 命令在 Ubuntu 22.04 中从头开始安装 Kubernetes。

环境说明

我在集群中安装了3个Ubuntu 22.04虚拟机作为Kubernetes主机,均我的VMware虚拟化基础架构中运行。它们配置有8 个CPU和8GB RAM,以及80GB的磁盘空间。每个主机都有一个可连接互联网的网卡。此外,我还创建了一个nnkin用户并将其添加到sudoers文件中,以便在示例环境中进行访问。

创建用户

sudo adduser nnkin

为新用户nnkin设置密码,确保其安全性。

sudo passwd nnkin

使用usermod命令将nnkin用户添加到sudo组,这样nnkin用户就可以执行具有管理员权限的命令。

sudo usermod -aG sudo nnkin

切换到新创建的nnkin用户,验证其是否具有sudo权限。

su - nnkin

三台Ubuntu虚拟机IP地址分别为

  •  kube01 192.168.0.201
  •  kube02 192.168.0.202
  •  kube03 192.168.0.203

DNS服务器

  • 192.168.0.254

更新系统

无论部署任何环境,都建议先更新一下系统。

sudo apt-get update && sudo apt-get upgrade -y

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

设置主机名及添加DNS解析

  • kube01.nnkin.com 192.168.0.201
  • kube02.nnkin.com 192.168.0.202
  • kube03.nnkin.com 192.168.0.203
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

在DNS服务器中分别添加3台主机的A记录解析,为了简单方便,你也可以使用sudo vim /etc/hosts分别将DNS条目添加至每台服务器hosts文件中。

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

使用命令ping每台主机DNS解析,验证解析正常。

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

禁用交换文件

运行一下命令来关闭交换

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

添加内核模块

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

##执行上述命令后运行
sudo modprobe overlay
sudo modprobe br_netfilter
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

开启IP转发

sudo tee /etc/sysctl.d/kube.conf <<EOT
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOT
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

将更改应用到内核

sudo sysctl --system
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

设置Docker存储库

首先,需要设置 Docker的apt存储库

sudo apt-get install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

安装containerd

执行以下命令开始安装containerd,可能会由于网络缘故失败,多执行几次即可。

sudo apt install containerd.io -y
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

将systemd配置为组

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
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

启动服务配置

最后,需要将服务设置为自动启动并检查以确保其正在运行

sudo systemctl restart containerd
sudo systemctl enable containerd
sudo systemctl status containerd
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

配置Kubernetes阿里云apt源

Kubernetes需要将某些apt存储库添加到Ubuntu系统中。要配置所需的Kubernetes存储库,将运行以下命令

sudo bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF'
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add

##执行上述命令后运行
sudo apt update
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

安装Kubernetes

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl -y
sudo apt-mark hold kubelet kubeadm kubectl -y
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

初始化Kubernetes集群

在master节点上执行以下命令开始初始化Kubernetes集群

sudo kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

耐心等待初始化,这里初始化的速度快慢通常取决于服务器的网络速度和镜像下载情况。一般这个过程通常需要3到10分钟 。如果网络速度较慢或者需要下载的镜像较多,时间可能会更长。

初始化Kubernetes出错

如初始化过程中出现 Initial timeout of 40s passed ,先分析下原因

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

可以通过执行如下命令解决

sudo sed -i 's/registry.k8s.io\/pause:3.8/registry.aliyuncs.com\/google_containers\/pause:3.9/g' /etc/containerd/config.toml

##执行上述命令后运行
sudo kubeadm reset

##执行上述命令后运行
sudo systemctl restart containerd

##执行上述命令后运行
sudo kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers

初始化Kubernetes成功

稍等一会儿后应该看到Kubernetes集群已成功初始化。

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

该命令的输出将提供将kubeconfig文件复制到 $HOME 目录

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

同时在输出中,还看到可以在节点上使用的 join命令加入集群的引导。

kubeadm join 192.168.0.201:6443 --token c8h43l.0ws1l6zknfe9y1eo \
	--discovery-token-ca-cert-hash sha256:bfe968783dcc5dd6536a286e66e85c4d537a4a1c3f8216550f05794753cd008c 

至此集群初始化成功。

加入集群

将主节点/etc/kubernetes/目录下的admin.conf文件分别拷贝到从节点/etc/kubernetes目录,然后设置环境变量

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

现需要将kube02和kube03节点加入Kubernetes集群。由于有多个工作节点,因此将在下面的每个节点上使用 kubeadm join命令,需要将token替换为你实际环境中token!另外这段kubeamd join命令的token只有24h,24h就过期,需要执行kubeadm token create --print-join-command重新生成。

sudo kubeadm join 192.168.0.201:6443 --token c8h43l.0ws1l6zknfe9y1eo \
	--discovery-token-ca-cert-hash sha256:bfe968783dcc5dd6536a286e66e85c4d537a4a1c3f8216550f05794753cd008c

kube02

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

kube03

使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

查看集群状态

kubectl get nodes
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

状态显示为 NotReady。还需要安装容器网络。

配置Pod网络

为了让Kubernetes节点进行通信,需要设置一个pod overlay网络。如上所述,这就是节点处于NotReady状态的原因。 Calico是Kubernetes的首选网络overlay。要安装Calico进行网络通信,可以在主节点上运行以下命令

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

安装 Calico后,可以再次检查集群的状态,我们看到节点现在处于Ready状态。我们现在已经为容器化应用程序做好了准备。

验证Kubernetes

可以使用以下命令查看集群上的所有资源

kubectl get all -A
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

创建测试部署

使用 Nginx 应用程序创建一个测试部署

kubectl create deploy nginx --image nginx
使用Kubeadm在Ubuntu 20.04中部署Kubernetes-诺诺博客

© 2025 诺诺博客 蜀ICP备2024099071号-1 如有侵权请联系删除 | 网站地图 | 百度统计 | 又拍云CDN加速
为了获得更好的浏览效果 建议您使用IE8.0及以上版本浏览器登陆本站点 · 服务器托管于腾讯云
  • {{ item.name }}
  • {{ item.name }}