之前根据别人的文章创建了k8s虚拟机,鉴于我已经深爱直接下载虚拟机,按捺不住又想把完成品的虚拟机分享出来以供下载(虽然其实价值并不大😓)。但CentOS标准版制成的虚拟机文件较大,因此我又重制了一份minimal版本的,并更新到了最新的docker&k8s版本,也一并记录在此。
一. 版本
CentOS-7.9-2207-minimal.7z:CentOS停止维护了,7.9在2022年更新的版本算是个不错的选择
docker-ce-20.10.24-3.el7: 2024年更新的20.10版本,算是比较新的稳定版
kubeadm-1.28.10 kubelet-1.28.10 kubectl-1.28.10:2024年维护中的k8s版本
二. 装系统
先在阿里云下载CentOS: https://mirrors.aliyun.com/centos-vault/7.9.2009/isos/x86_64/
然后用 VMWare Player 17 (个人版)安装这个 minimal 版本:
结束安装并重启虚拟机后,配置网络如下:
reboot后,下面的工作就可以ssh到虚拟机上操作了。
三. 配置系统
先安装一下 net-tools 和 wget:
再配置一下习惯用法,比如 vim alias,上下键补全等:
.inputrc文件内容:
"e[A": history-search-backward
"e[B": history-search-forward
接下来是适配k8s的一些services:
关闭swap:
k8s网桥配置:
kubernetes.conf文件内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
安装ipvs
ipvs.modules文件内容
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
四. 安装docker
docker选用10.20.24的最新版本
daemon.json文件内容
{
"registry-mirrors": ["https://【自己申请】.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
五. 安装k8s
k8s选用了现在仍在维护的、更新了好几个小版本的1.28.10
kubernetes.repo文件内容
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/r...
注意:阿里云从k8s 1.28版本开始,切换了repo到kubernetes-new
sysconfig/kubelet文件内容
KUBELET_EXTRA_ARGS=
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
六. 创建k8s
kubeadm init 时出现了几次问题,大多与国内网络环境有关,具体解决方法看图:
6.1 container runtime is not running / unknown service runtime.v1.RuntimeService
6.2 failed to pull and unpack image "registry.k8s.io/pause:3.6"
其中config.toml文件中的sandbox_image替换路径为:
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
注:使用 pause:3.9 是 kubeadm init 时的提示
6.3 拉取image失败,手动拉取如下:
七. 安装flannel
由于网络原因,flanneld的image最好手动获取。github上获取flanneld镜像位置为:https://github.com/flannel-io/flannel/releases/tag/v0.25.4,这里我取了现在的最新版本:
下载 docker 与 yaml 配置文件,从 yaml 中,可以看到相匹配的 cni-flannel 插件版本:
然后还是在 github 上,找到对应版本的 cni-flannel 插件:https://github.com/flannel-io/cni-plugin/releases/tag/v1.4.1-flannel1
7.1 加载flanneld镜像
将下载的flanneld加载入docker image:
- 由于最新的k8s采用了containerd,因此加载到docker image还不够,还需要加载到containerd的k8s.io域
- kube-flannel.yml 里面的flanneld取自docker.io,从github上下载的来自guay.io,因此需要修改kube-flannel.yml使其匹配
7.2 配置cni-flannel插件
根据kube-flannel.yml的配置,cni-flannel插件需要从 docker.io/flannel/flannel-cni-plugin:v1.4.1-flannel1 下载,然而从 github 上下载的 cni-plugin-flannel-linux-amd64-v1.4.1-flannel1.tgz 并不是 docker image,而是个可执行文件。
有三种做法:
- 修改docker.io,使用一个可访问的镜像源
- 下载cni-flannel插件的docker image,并同7.1 flanneld一样操作
直接使用可执行文件版本,不使用容器版本
这里采用最后一个方法:将kube-flannel.yml配置文件中,flannel-cni-plugin的部分删除:
八. 使用kubectl
按照 kubeadm init 成功后的提示信息,配置如下:
之后就可以通过kubectl命令查看k8s状态了:
九. 组网
将上面的虚拟机复制两份,分别运行后:
- 修改新虚拟机的 hostname 为 node1 与 node2
- 分别在三台机器修改/etc/hosts,设置 master/node1/node2 对应的 IP
- 在 master 执行 kubeadm init 命令
- 在 node1 与 node2 执行 kubeadm join 命令【见 kubeadm init 的输出打印】
- 在 master 执行 kubectl apply -f kube-flannel.yml
十. 虚拟机下载
最后,上面所有的成果可以在这里直接下载【虚拟机】:
https://pan.baidu.com/s/1qojhU6QMeOm0abkhoBwikg?pwd=pg99
linux用户名:root
linux密码:123456
使用方法:
- 虚拟机启动时选择“已‘复制’虚拟机”
- 配置 /etc/docker/daemon.json 中的镜像地址
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/47461.html