CentOS7-安装kubernetes v1.30.0版本
笔者之前参考网上教程,在3节点的linux服务器上完成k8s-v1.17.4和docker方式的搭建。后续发现,k8s从1.24之后,没有Dockershim了。因此有些配置方法不适合v1.30.0的版本。故重新按照官网+网络资料的方式,安装下v1.30.0版本的k8s。内心OS:如果资金足够的话,直接购买云服务器厂商提供的k8s服务就行了。避免复杂的配置。
前言
笔者之前参考网上教程,在3节点的linux服务器上完成k8s-v1.17.4和docker方式的搭建。后续发现,k8s从1.24之后,没有Dockershim了。因此有些配置方法不适合v1.30.0的版本。故重新按照官网+网络资料的方式,安装下v1.30.0版本的k8s。
内心OS:如果资金足够的话,直接购买云服务器厂商提供的k8s服务就行了。避免复杂的配置。
前置条件
1,由于是3节点,建议先阅读笔者的《3节点linux服务器集群搭建》,对服务器进行一个初步配置。
第一步 安装容器进行时(CRI)
请移步《CentOS安装CRI--containerd》阅读
第二步 启用 IPv4数据包转发
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF
# 应用 sysctl 参数而不重新启动
sudo sysctl --system
使用以下命令验证 net.ipv4.ip_forward
是否设置为 1
sysctl net.ipv4.ip_forward
第三步 配置 ipvs 功能
3.1 安装 ipset 和 ipvsadm
yum install ipset ipvsadm -y
3.2 添加需要加载的模块写入脚本文件
cat <<EOF> /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
3.3 为脚本添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
3.4 执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
3.5 查看模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
第四步 配置kubernetes 的国内镜像源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/repodata/repomd.xml.key
EOF
注意新旧 kubernetes 仓库的存储路径。
第五步 安装kubeadm、kubelet和kubectl
yum install -y kubelet kubeadm kubectl
设置 kubelet 开机自启动
systemctl enable --now kubelet
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl
安装
第六步 更改沙箱版本
在第一步的安装容器进行时,生成containerd的配置文件 config.toml中。会默认一个registry.k8s.io/pause:3.8的沙箱。
这个版本在某些网络下很难拉取。因此,可以考虑更改为registry.aliyuncs.com/google_containers/pause:3.9。
更改完成后,需要重启 containerd 服务.
重启命令
systemctl restart containerd
第七步 利用 kubeadm 初始化 kubernetes 集群
kubeadm init \
--apiserver-advertise-address=192.168.1.6 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.30.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--v=5
最后那个--v=5是看日志。
初始化完成后,屏幕打印会出现如下图所示的内容
第八步 配置用户运行 kubectl
根据提示,如果非 root 用户运行 kubectl,需要按下图配置
这里我使用 root 账户,因此只需要执行如下命令即可
export KUBECONFIG=/etc/kubernetes/admin.conf
第九步 其他节点执行kubeadm join,将节点加入集群
执行命令
kubeadm join 192.168.1.6:6443 --token v1v9g3.zxb1h5xgp28s68ly \
--discovery-token-ca-cert-hash sha256:2b6bc0528bbc984ae0348e833691cc3916814f58df6efb85486f0e234db3cb3d
说明,这里面的 token 以及 sha256的值,要根据第七步中实际执行后提示的值来写。
查询节点信息
如果没有令牌生成,可以参考官网的做法处理
第十步 安装 Pod 网络附加组件
注意:
本节包含有关网络设置和部署顺序的重要信息。在继续之前,请仔细阅读所有建议。
你必须部署一个基于 Pod 网络插件的容器网络接口(CNI), 以便你的 Pod 可以相互通信。在安装网络之前,集群 DNS (CoreDNS) 将不会启动。
- 注意你的 Pod 网络不得与任何主机网络重叠:如果有重叠,你很可能会遇到问题。 (如果你发现网络插件的首选 Pod 网络与某些主机网络之间存在冲突, 则应考虑使用一个合适的 CIDR 块来代替, 然后在执行
kubeadm init
时使用--pod-network-cidr
参数并在你的网络插件的 YAML 中替换它)。
- 默认情况下,
kubeadm
将集群设置为使用和强制使用 RBAC(基于角色的访问控制)。 确保你的 Pod 网络插件支持 RBAC,以及用于部署它的清单也是如此。
- 如果要为集群使用 IPv6(双协议栈或仅单协议栈 IPv6 网络), 请确保你的 Pod 网络插件支持 IPv6。 IPv6 支持已在 CNI v0.6.0 版本中添加。
说明:
kubeadm 应该是与 CNI 无关的,对 CNI 驱动进行验证目前不在我们的端到端测试范畴之内。 如果你发现与 CNI 插件相关的问题,应在其各自的问题跟踪器中记录而不是在 kubeadm 或 kubernetes 问题跟踪器中记录。
这里网络附加件,我们选用 flannel 组件
执行如下命令进行部署
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
稍等片刻之后,执行
kubectl get nodes
发现所有节点都 ready
执行查询 pods 信息,执行
kubectl get pods --all-namespaces
也显示 coreDNS 的 pod 启用并运行了
第十一步 测试
#创建 nginx 服务
kubectl create deployment nginx --image=nginx:1.14-alpine
#暴露端口
kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort
#查看服务
kubectl get pod,svc
浏览器访问
至此,简单的k8s的集群环境已经完成搭建
更多推荐
所有评论(0)