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服务就行了。避免复杂的配置。

前置条件

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的集群环境已经完成搭建 

相关推荐

  1. CentOS7安装最新版本git

    2024-04-29 03:16:02       53 阅读
  2. Centos 7 安装 subversion 新版本

    2024-04-29 03:16:02       37 阅读
  3. CentOS 7.9安装zabbix5.0.39LTS版本

    2024-04-29 03:16:02       41 阅读
  4. MySQL5.7社区版本CentOS7系统上的安装

    2024-04-29 03:16:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 03:16:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 03:16:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 03:16:02       87 阅读
  4. Python语言-面向对象

    2024-04-29 03:16:02       96 阅读

热门阅读

  1. 用C++实现单例模式

    2024-04-29 03:16:02       32 阅读
  2. MySQL

    MySQL

    2024-04-29 03:16:02      35 阅读
  3. kafka 线上消费积压问题

    2024-04-29 03:16:02       33 阅读
  4. Gitea 的简单介绍

    2024-04-29 03:16:02       32 阅读
  5. css如何去掉重叠部分的边框,CSS中nth-child不生效

    2024-04-29 03:16:02       30 阅读
  6. C++--

    C++--

    2024-04-29 03:16:02      32 阅读
  7. 分布式架构搭建

    2024-04-29 03:16:02       34 阅读