Ubuntu 22.04部署Kubernetes 1.25

2023-10-28

基本环境

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

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

系统和软件版本

内容 版本
Ubuntu 22.04.1 LTS
docker 20.10.21
cri-dockerd 0.2.6.3
k8s 1.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和主机名变了之后需要重新配置
配置过程较为繁琐,在后面的文章中会记录成功配置的步骤

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu 22.04部署Kubernetes 1.25 的相关文章

随机推荐

  • MinGW下载和安装详细步骤 及 环境配置

    一 下载 点击 这里 进入官网下载最新版本的MinGW 这里下载的是Windows32位 但MinGW的所有软件都将在64位Windows平台上执行 所以32位和64位都是一样的 二 安装 1 下载完成后 双击程序进行安装 2 点击 Ins
  • Oracle学习总结09——表的操作

    1 创建数据表 createtable 代码手敲 且增加注释 问题 字段为系统默认日期怎么定义 创建students表 create table students stuno number 10 not null stuname varch
  • ExtJs4.0环境搭建及spket安装 .

    这些天在边学边用ExtJs 避免不了要写相关的代码来加深对这个框架的理解 那么首先就得搭建一个ExtJs的环境 1 开发环境 Microsoft Windows XP Version 2002 Service Pack 3 Eclipse
  • 华为OD机试 - 整型数组按个位值排序(Java)

    题目描述 给定一个非空数组 列表 其元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素 相对位置保持不变 当数组元素为负值时 十进制最低位等同于去除符号位后对应十进制值最低位 输入描述 给定一个非空数组
  • 深入 Spring 系列之静态资源处理

    深入 Spring 系列之静态资源处理 1 背景 前一段时间 WebIDE 开源的过程中 无意间接触到 webjars 觉得比较有趣 于是研究并整理了一下 webjars 是将前端的库 比如 jQuery 打包成 Jar 文件 然后使用基于
  • 什么是IQ信号, IQ调制又是怎么回事?

    在现代无线通信中 IQ调制属于标准配置 经常应用于通信系统的信号调制和解调环节 IQ调制的应用简化了通信设备的硬件结构 同时提高了频谱资源的利用效率 提高了信号传输的稳定性 让我们先来看看什么是IQ信号 IQ信号又称同向正交信号 I为in
  • linux grep 多个文件,Linux多文件查找工具之grep

    1 简介 grep全称Global Regular Expression Print 全局正则表达式打印 在这里面提到了三个关键词 我们逐个进行分析 这样有助于我们理解 grep这个命令的作用 1 global说明该命令可以用于所有用户 交
  • VHDL——含异步清零和同步使能的加法计数器源程序

    library ieee use ieee std logic 1164 all use ieee std logic arith all use ieee std logic unsigned all entity counter is
  • Kubernetes YAML 文件 详细解释

    To deploy Dashboard execute following command kubectl apply f https raw githubusercontent com kubernetes dashboard v1 10
  • C语言实现冒泡排序和快速排序

    写在前面的话 以排升序为例 目录 冒泡排序 单趟 循环 优化 快速排序 单趟 递归 优化 不足 冒泡排序 通过重复地走访过要排序的元素列 依次比较两个相邻的元素 如果顺序错误就把他们交换过来 走访元素的工作是重复地进行 直到没有相邻元素需要
  • mongodb搭建Replica Set

    1 创建数据文件夹 mkdir p data master mkdir p data slaver mkdir p data arbiter 效果 data 文件夹包含 arbiter master slaver 三个文件夹 2 创建日志存
  • STM32无人机-四轴四元数姿态解算与卡尔曼滤波

    四轴四元数姿态解算 MPU6050是一种非常流行的空间运动传感器芯片 可以获取器件当前的三个加速度分量和三个旋转角速度 什么是四元数 这部分很难 新手知道四元数的功能是将 6 轴传感器数据转化为三轴姿态角度数据即可 四元数解算程序店家已经封
  • 机器学习——决策树+剪枝(适用ID3与C4.5)

    问 标准的ID3算法支持剪枝操作 答 错误 标准的ID3算法不支持剪枝操作 该算法通过递归地构建决策树 在每个节点上使用信息增益作为判定条件进行特征选择 直到遍历完所有特征或者将数据集划分为同一类别的样本 ID3算法容易产生过拟合现象 剪枝
  • 记录一次NestedScrollView嵌套RecyclerView再嵌套RecyclerView的坑

    由于要做一些复杂的界面 需要在NestedScrollView下嵌套RecyclerView 在RecyclerView的条目中又有一个横向的RecyclerView 在 gt Android 7 0系统当中运行是显示正常的 但是在低于7
  • ctfshow 限时活动 红包挑战7和红包挑战8详细答案和见解

    ctfshow 利用create function函数 并绕过base64编码 highlight file FILE error reporting 0 extract GET create function name base64 en
  • 大数据工程师和Java后台开发的技术要求区别

    每家公司对大数据工作和java开发的要求不尽相同 目前长期从事数据库管理 挖掘 编程工作的人 包括传统的量化分析师 hadoop方面的工程师 以及任何在工作中需要通过数据来进行判断决策的管理者 比如某些领域的运营经理等 都可以尝试大数据工程
  • linux:命令行 &&与

    参考 Linux 命令行 与 简书 总结 command1 command2 只有前面命令执行成功 后面命令才继续执行 shell中 左边的命令 命令1 返回真 即返回0 成功被执行 后 右边的命令 命令2 才能够被执行 command1
  • mtk camera 移植步骤

    mtk camera 移植步骤 1 Kernel层驱动代码文件添加 mediatek custom doov92 wet tdd kernel imgsensor 下添加imx179 mipi raw 2lane 目录如下 imx179 m
  • 视频监控系统时间显示常见故障分析 及时间同步解决方案

    分别任职湖北三峡职业技术学院电子信息学院教研室主任 宜昌市教育技术装备站网络中心主任 宜昌市公安局科研所所长 视频监控系统是指综合应用视音频监控 通信 计算机网络等技术监视设防区域 并实时显示 记录现场图像的电子系统或网络 系统可以在非常事
  • Ubuntu 22.04部署Kubernetes 1.25

    Ubuntu 22 04部署Kubernetes 1 25 基本环境 系统和软件版本 master节点ip 安装过程 1 准备工作 1 1 修改主机名 1 2 关闭swap分区 1 3 关闭防火墙 1 4 重启电脑 确认swap和防火墙均已