Kubernetes(k8s) 1.26.3 安装教程(Ubuntu 22.04.1)

教程中使用的软硬件配置如下:

  • Raspberry Pi 4 4GB RAM
  • Ubuntu 22.04.1 LST

背景

我的计划是搭建一个树莓派的小集群,通过动手搭建的方式学习k8s技术,尽管可以用虚拟机模拟多台电脑,但还是希望有实际硬件的操作经验,也感觉这样更酷一点哈哈哈。

网上有很多教程,但我之所以写下自己的经验,是因为我所看到的教程都是教学版本较低的k8s安装过程,而随着k8s和docker脱钩,很多安装步骤并不再是必须的,可以更简化一些。

在选择k8s的时候,除了kubernetes,还有microk8s,k3s等选项,都能够提供k8s的功能,但是很多都简化了安装流程,把复杂的工程部分掩盖了,这对于深入学习和理解kubernetes是不利的,好比傻瓜相机学习摄影技术(曝光度、光圈等等)。因此我在学习的过程中,选择了最原始的kubernetes。

以下环节本人亲测有效(截止到写博客的日期为止),非科班出身,出于个人兴趣开始学习k8s和container技术,绕了不少弯路,经过2天的钻研才搞明白,希望对学习k8s的人有帮助,如有不准确的地方,欢迎指出!

注:每个章节的开头列了一些概念和经验总结,不阅读也不影响操作,可直接跳过。

1. Docker-ce

  • 安装docker-ce是为了使用containerd作为k8s的container runtime使用,因为它实现了CRI(一个接口)。k8s不再基于docker运行,转而变成对任意container的支持,只要它实现CRI即可。
  • docker-ce可以通过官方路径安装,但是这里为了保险起见,还是使用了国内的“官方”镜像路径,以免未来docker官方路径失效导安装不顺利。
  • 这部分很大程度参考了http://t.csdn.cn/RUh7V,感谢作者分享!
  • 其实我不太确定docker-ce是否必须安装,有的教程仅仅安装了containerd.io,而且从k8s官方文档里也能看出k8s和docker程序的脱钩,但是安装docker-ce肯定会装containerd.io,顶多就是装上docker.io和其他相关但不是必须的程序。

安装docker-ce

# 安装一些系统工具
sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

# 安装证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 写入软件源信息
echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

# 更新并安装Docker-CE
sudo apt update
sudo apt -y install docker-ce

 配置docker守护程序

cat <

重启docker

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

2. containerd

  • containerd是一个container runtime,是k8s用于启动pods和containers的程序,更具体的可以参考k8s官方文档,对于我个人来说,理解container对k8s的原理和安装流程的问题诊断起到了很大的作用。
  • containerd在启动k8s的时候需要启动一个sandbox,从默认路径拉一个镜像使用,而默认路径是k8s官方路径,不能访问,因此在配置文件 (config.toml) 里需要指定一个可用的路径。

修改配置文件

# 修改配置文件
cat <

让iptables能够查看桥接流量(这里我不太明白原理,完全是搬运其他教程,如果能帮我指点迷津将感激不尽)

# 设置iptables设置,使其能够看到桥接流量
cat <

重启containerd

sudo systemctl restart containerd
sudo systemctl enable containerd

3. Kubernetes 

  • k8s的镜像路径都不可访问,因此需要找一个国内的“官方”版本,这里使用的是阿里提供的路径,未来可能会有所改变。

关闭swap

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

安装kubernetes,从国内的路径下载安装包

# 获取证书
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg

# 写入软件源列表
echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 安装
sudo apt update
sudo apt install -y kubelet=1.26.3-00 kubeadm=1.26.3-00 kubectl=1.26.3-00

# 这一行可以不运行,只是为了避免未来无意中更新而导致k8s出问题才阻止检查更新的
sudo apt-mark hold kubelet kubeadm kubectl

拉取k8s需要的镜像文件,传入的参数就是镜像路径

sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers 

检查一下拉下来的pause镜像的版本,确保和 /etc/containerd/config.toml 里面sandbox_image的版本一致,这里使用的3.9。

 启动k8s

sudo kubeadm init --image-repository=registry.aliyuncs.com/google_containers

如果按照以上步骤操作,应该是没有问题的,看到红线部分就说明已经成功跑起来啦!!

Kubernetes(k8s) 1.26.3 安装教程(Ubuntu 22.04.1)_第1张图片

下一步就是把node加入到master,然后部署任务等等,这部分我还没有研究,但是近期打算继续钻研,并且总结一下使用经验。启动命令中可以加入很多参数,这里为了简化流程,我没有做过多的说明和记录,自己也不太明白背后的原理和作用,以后深入了解后打算再做补充,能先把k8s跑起来,就是迈出了第一步。

感谢阅读,有建议或者问题请多多留言,希望能和大家一起进步!

你可能感兴趣的:(kubernetes,docker,linux,ubuntu,容器)