Ubuntu 22.04部署Kubernetes 1.25

基本环境

最近想要安装最新版本的k8s进行学习和测试,但是k8s1.24后的版本不再支持docker,需要安装cri-dockerd,过程相对复杂了一点。在网上查阅了相关资料进行了尝试,除了安装过程麻烦了一点,使用上与之前的版本没有什么区别。

另外,使用的主机是 win11+Ubuntu 双系统,导致遇到了一些额外的问题。下面对安装过程和遇到的问题进行了记录。

系统和软件版本

内容版本
Ubuntu22.04.1 LTS
docker20.10.21
cri-dockerd0.2.6.3
k8s1.25.0

master节点ip

192.168.103.46

安装过程

1 准备工作

1.1 修改主机名

hostname $hostname
sudo hostnamectl set-hostname k8s-master

sudo gedit /etc/hosts

# 写入以下内容
192.168.103.46 k8s-master

1.2 关闭swap分区

# free命令,swap行全为0说明没有swap分区
free -m

# 查看swap分区,没有输出说明没有swap分区
sudo swapon -show

# 关闭全部swap分区
sudo swapoff -a

# 修改配置文件,把swap相关的注释掉
sudo vi /etc/fstab

1.3 关闭防火墙

sudo ufw disable
sudo ufw status

1.4 重启电脑,确认swap和防火墙均已关闭

2 安装docker

# 先卸载旧版
apt-get remove docker docker-engine docker.io containerd runc

# 安装证书
apt update
apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 写入docker镜像源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 修改docker启动项
sudo mkdir /etc/docker
sudo gedit /etc/docker/daemon.json

# 复制以下内容
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}

# 保存关闭后,重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

# 设置开机启动
sudo systemctl enable docker

# 查看docker版本
sudo docker version

3 安装cri-dockerd

# 从github下载cri-dockerd安装包
# Ubuntu应该下载deb包,CentOS是rpm包
# 注意版本号,18.04是bionic,22.04.1是jammy
wget https://github.com/Mirantis/cri-dockerd/releases/cri-dockerd_0.2.6.3-0.ubuntu-jammy_amd64.deb

# 安装
dpkg -i cri-dockerd_0.2.6.3-0.ubuntu-jammy_amd64.deb

# 设置启动参数
sed -i -e 's#ExecStart=.*#ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d#g' /usr/lib/systemd/system/cri-docker.service

# 设置开机启动
systemctl daemon-reload
systemctl enable cri-docker

# 修改containerd的配置,注释掉 disabled_plugins = ["cri"]
# !不修改拉取镜像会报错!!
vi /etc/containerd/config.toml

4 安装k8s

# 安装工具
sudo apt-get install -y apt-transport-https ca-certificates curl

# 安装GBP秘钥
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg  https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg

sudo echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] http://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 更新软件源
sudo apt-get update

# 查看k8s可用版本
apt-cache madison kubeadm

# 安装k8s 1.25.0版本
sudo apt-get install -y kubelet=1.25.0-00 kubeadm=1.25.0-00 kubectl=1.25.0-00

# 锁定版本,防止自动更新
sudo apt-mark hold kubelet kubeadm kubectl

# 配置kubelet
mkdir /etc/sysconfig
sudo gedit /etc/sysconfig/kubelet

# 复制以下内容,保存退出
KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"

# 开机启动
systemctl enable --now kubelet 

注:以上操作在所有节点上都要执行

下面的操作,master节点进行初始化(kubeadm init),集群其他节点加入master节点(kubeadm join)

所有节点都要安装flannel插件

5 初始化master节点

# 查看所需镜像
sudo kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

# 拉取镜像
sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock

# kubeadm初始化
# 注意--cri-socket=unix:///run/cri-dockerd.sock这个参数是必须的,标明使用cri-dockerd
sudo kubeadm init --control-plane-endpoint=192.168.103.46 --kubernetes-version=v1.25.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --token-ttl=0 --cri-socket=unix:///run/cri-dockerd.sock --upload-certs --image-repository registry.aliyuncs.com/google_containers

# 如果集群初始化失败需要重置,执行
sudo kubeadm reset --cri-socket=unix:///run/cri-dockerd.sock 

# 配置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6 安装flannel插件

wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
sudo kubectl apply -f kube-flannel.yml

# 等待一会后,查看节点状态,已经Ready,说明初始化成功
kubectl get nodes

7 Worker节点加入集群

# master节点执行
kubeadm token create --print-join-command

# 得到加入集群命令
kubeadm join 192.168.103.81:6443 --token zeehjn.njmfi35v5xsdnnq9 --discovery-token-ca-cert-hash sha256:9f904207151177ba30bfd43eb6c18d1a866346d60370a1bc7d1462a70ac287dc

worker节点执行上面输出的命令即可

遇到的问题

1、Ubuntu找不到无线网卡,通过安装网卡驱动解决

# 首先查找无线网卡型号
lspci |grep Network

# 在github搜索对应驱动,这里安装的是rtw8852be
https://github.com/lwfinger/rtw8852be
# 按照教程安装成功后,可以使用无线网络

2、在安装系统时设置了swap分区映射,导致swap分区关不了,最后使用DiskGenius工具直接删除对应的分区解决

3、k8s 1.24以上版本不支持docker,需要使用cri-dockerd

4、containerd默认禁用cri,需要修改其配置文件

修改 /etc/containerd/config.toml
注释掉 disabled_plugins = ["cri"]

5、ip和主机名变了之后需要重新配置
配置过程较为繁琐,在后面的文章中会记录成功配置的步骤

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在 Ubuntu 22.04安装 Kubernetes 的步骤: 1. 更新系统并安装必要的软件包: ```shell sudo apt-get update sudo apt-get install curl socat conntrack ebtables ipset ipvsadm ``` 2. 配置服务器时区: ```shell sudo timedatectl set-timezone <时区> ``` 3. 创建 kube 用户并配置免密码 sudo 权限: ```shell sudo adduser kube sudo usermod -aG sudo kube sudo su - kube cat <<EOF | sudo tee /etc/sudoers.d/kube Defaults:kube !fqdn Defaults:kube !requiretty kube ALL=(ALL) NOPASSWD: ALL EOF ``` 4. 配置主机名: ```shell sudo hostnamectl set-hostname <主机名> ``` 5. 配置 hosts 文件: ```shell sudo nano /etc/hosts ``` 在文件中添加以下内容: ``` <主机IP> <主机名> ``` 6. 安装 Docker: ```shell curl -fsSL https://get.docker.com | sudo sh - sudo usermod -aG docker kube ``` 7. 安装 Kubernetes: ```shell curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl ``` 8. 初始化 Kubernetes 主节点: ```shell sudo kubeadm init --pod-network-cidr=<Pod网络CIDR> ``` 请将 `<Pod网络CIDR>` 替换为您要使用的 Pod 网络的 CIDR。 9. 配置 kubeconfig 文件: ```shell mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 10. 安装网络插件(例如 Calico): ```shell kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` 11. 等待网络插件部署完成后,您的 Kubernetes 集群就安装完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值