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

本文档详细介绍了如何在RaspberryPi4(4GBRAM)上运行Ubuntu22.04.1LTS系统,手动搭建一个Kubernetes集群。作者选择不使用简化版的k8s发行版如microk8s或k3s,以更好地理解k8s的核心机制。教程涵盖了从安装docker-ce、配置containerd,到设置k8s的全过程,包括解决国内访问k8s官方镜像的问题。作者强调了每个步骤的必要性,并分享了个人的学习心得。
摘要由CSDN通过智能技术生成

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

  • 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 <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

重启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 <<EOF | sudo tee /etc/containerd/config.toml
version = 2
[plugins."io.containerd.grpc.v1.cri"]
  sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
EOF

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

# 设置iptables设置,使其能够看到桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

# 应用参数
sudo sysctl --system

重启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

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

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

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于在 Ubuntu 18.04.1 上安装 Kubernetes 1.26.3 的教程,可以按照以下步骤进行操作: 1. 更新系统软件包: ``` sudo apt update sudo apt upgrade -y ``` 2. 安装 Docker: ``` sudo apt install docker.io -y sudo systemctl start docker sudo systemctl enable docker ``` 3. 配置 Kubernetes APT 存储库: ``` sudo apt update && sudo apt install -y apt-transport-https curl 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 update ``` 4. 安装 Kubernetes 组件: ``` sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl ``` 5. 初始化 Kubernetes Master 节点: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 初始化完成后,将会显示一些指令,类似下面的内容: ``` kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash <hash> ``` 6. 设置当前用户的 Kubernetes 配置: ``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 7. 安装网络插件(这里以 Calico 为例): ``` kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml ``` 8. 加入其他节点(如果有的话): 在其他节点上执行第 5 步中的指令,将其加入 Kubernetes 集群。 完成上述步骤后,您应该已经成功安装Kubernetes 1.26.3 版本。您可以通过运行 `kubectl get nodes` 命令来验证节点的状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值