centos7安装k8s 1.25.5

前言

这是开发测试环境的安装教程,不适用于生产,生产需要考虑master高可用。参考的官方文档:https://v1-25.docs.kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

环境准备

三台机器,配置4核8G,100G硬盘
系统:CentOS Linux release 7.8.2003 (Core)
内核:Linux master 3.10.0-1127.19.1.el7.x86_64
Ip:10.17.203.44、10.17.203.45、10.17.203.46
规划:一个master节点,两个node节点,即:
10.17.203.44-master,
10.17.203.45-node-1,
10.17.203.46-node-2
注意:此次安装的版本为1.25.5,容器运行时为containerd,官方建议升级内核版本到较新版本,但是我没有升级也成功了

必要设置(所有机器都执行)

修改主机名

永久有效:hostnamectl set-hostname xxx,分别将三台机器设置为master、node01、node02, 向三台机器添加hosts文件,路径:/etc/hosts,内容:

10.17.203.44  master
10.17.203.45  node01
10.17.203.46  node02

修改完成后,重启机器:reboot

关闭swap分区

注释/etc/fstab中关于swap的配置:
在这里插入图片描述
注释后执行以下命令:# echo vm.swappiness=0 >> /etc/sysctl.conf
完成后重启: # reboot
验证(swap行均为0):# free -m
在这里插入图片描述

关闭防火墙

[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld

设置时间:

修改成正确时间,时间正确可以忽略
[root@master ~]# timedatectl set-time "2023-03-07 10:50:00"

设置SELinux

[root@master ~]# setenforce 0
[root@master ~]# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

转发 IPv4 并让 iptables 看到桥接流量

通过运行 lsmod | grep br_netfilter 来验证 br_netfilter 模块是否已加载。
加载此模块,设置配置:

[root@master ~]#

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

[root@master ~]# sysctl --system
加载相关模块(注:后面要是init的时候发现报相关的预检查错误,可以再执行一下下面的命令)
[root@master ~]# sudo modprobe br_netfilter
[root@master ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

配置IPVS

[root@master ~]# vim /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

保存执行:
[root@master ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules
[root@master ~]# sh /etc/sysconfig/modules/ipvs.modules

安装containerd(所有机器)

选取containerd作为容器运行时,版本为1.6.16

安装必要工具

[root@master ~] yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息

[root@master ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看相关版本并安装

[root@master ~]# yum list containerd.io --showduplicates | sort -r
在这里插入图片描述

安装指定版本

[root@master ~]# yum install -y containerd.io-1.6.16-3.1.el7.x86_64

生成默认配置文件:

[root@master ~]# mkdir -p /etc/containerd
[root@master ~]# containerd config default > /etc/containerd/config.toml

替换默认pause镜像地址

[root@master ~]# sed -i 's#registry.k8s.io#registry.aliyuncs.com/google_containers#' /etc/containerd/config.toml

配置systemd作为容器的cgroup driver

[root@master ~]# sed -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml

修改存储位置

[root@master ~]# sed -i 's#/var/lib/containerd#/data/containerd#' /etc/containerd/config.toml

修改仓库配置文件位置

[root@master ~]# sed -i 's#config_path = ""#config_path = "/etc/containerd/certs.d"#' /etc/containerd/config.toml
注意:此处需要创建文件夹:[root@master ~]# mkdir -p /etc/containerd/certs.d

配置私有仓库:

例如:仓库地址ip:10.15.98.150,新建文件夹:
[root@master ~]# mkdir -p /etc/containerd/certs.d/10.15.98.150
进入文件夹创建文件:hosts.toml,文件内容:

[host."http://10.15.98.150:80"]
  capabilities = ["pull", "resolve", "push"]
  skip_verify = true

启动containerd和配置开机启动

[root@master ~]# systemctl restart containerd
[root@master ~]# systemctl enable containerd

查看版本信息

[root@master ~]# ctr version
[root@master ~]# containerd --version

安装kubeadm,kubelet和kubectl

安装组件(三台机器)

kubeadm:快速创建集群的工具
kubelet:这是一个需要在所有集群中机器上安装的组件,它用于执行开启Pod和容器等操作。
kubectl:与集群通信的命令行工具,官方提供的CLI。
国内无法访问官方源,所以又通过阿里云的。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

然后运行yum install命令安装kubeadm和相关工具,并运行kubelet。
[root@master ~]# yum install -y kubeadm-1.25.5-0.x86_64 kubelet-1.25.5-0.x86_64 kubectl-1.25.5-0.x86_64 --disableexcludes=kubernetes
注:默认安装最新版本,查看历史版本命令:
[root@master ~]# yum list kubelet --showduplicate

启动kubelet
[root@master ~]# systemctl enable --now kubelet

初始化主机节点(仅master节点,10.17.203.44

执行命令:
[root@master ~]# kubeadm init --pod-network-cidr=192.168.0.0/16 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.25.5
其中—image-repository是指定镜像仓库,使用的阿里镜像仓库,等待以上命令完成。成功示意图:
记录下kubeadm jion ...等后面的完整命令,后续需要用到
记录下kubeadm jion …等后面的完整命令,后续需要用到

如果是非root用户,则需要依次运行以下命令:
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果是root用户,则直接运行:
[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
注:export当次有效,断了连接之后再执行kubectl命令可能会报错:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
可以放到/etc/profile文件中,在文件末尾添加以上命令(export KUBECONFIG=/etc/kubernetes/admin.conf),保存后执行:
[root@master ~]# source /etc/profile

安装网络组件(仅master)

选择的是calico组件,官网地址:https://docs.tigera.io/calico/3.25/getting-started/kubernetes/quickstart
涉及到的文件:
calico.yaml
custom-resources.yaml

[root@master ~]# kubectl create -f calico.yaml
[root@master ~]# kubectl create -f custom-resources.yaml
等待安装完成,网络可能有点慢,实时监控是否完成,所有的pod都running之后就OK,有条件的可以将文件里面涉及到的镜像提前下载下来
[root@master ~]# watch kubectl get pods -n calico-system

加入工作节点(所有node)

在node节点上面执行master安装成功时,命令行中打印的kubeadm join命令,命令格式:kubeadm join --token : --discovery-token-ca-cert-hash sha256:,示例:
[root@master ~]# kubeadm join 10.17.203.44:6443 --token 2ttvnv.iq4q0zp91rwghcpt \ --discovery-token-ca-cert-hash sha256:9fc6ec4dca662648e9936ed029b87a7b6cc1baa0cec24fbb00b2b49e584de476

token如果忘记了,可以在master中执行以下命令获取:
[root@master ~]# kubeadm token list
输出如下:
在这里插入图片描述
默认情况下,token有效期24小时,过期后可以重新生成,命令如下:
[root@master ~]# kubeadm token create
如果你没有 --discovery-token-ca-cert-hash 的值,则可以在master中执行以下命令:
[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

查看集群节点状态:
在这里插入图片描述
所有节点都处于ready状态。
查看pod状态:
[root@master ~]# kubectl get pods --all-namespaces
如果所有Pod都处于Running状态,说明集群正常运行

启用IPVS代理模式(master节点)

在master节点修改ConfigMap的kube-system/kube-proxy中的模式(mode)为ipvs
[root@master ~]# kubectl edit cm kube-proxy -n kube-system
在这里插入图片描述

重启kube-proxy:
[root@master ~]# kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
查看kube-proxy的日志:
[root@master ~]# kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl logs "$1" -n kube-system")}'

在这里插入图片描述
至此,整个安装过程完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值