kubeadm部署k8s 1.26.0版本高可用集群

这篇具有很好参考价值的文章主要介绍了kubeadm部署k8s 1.26.0版本高可用集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.前言

本次搭建使用centos7.9系统,并且使用haproxy+keepalived作为高可用架构软件,haproxy实现k8s集群管理节点apiserver服务的负载均衡以实现集群的高可用功能,keepalived保障了hapxoy的高可用,容器引擎使用docker,需要额外引入cri-docker服务,且使用集群内置的etcd服务,并配置etcd的高可用集群,kubernetes使用版本为1.26.0

2.集群信息

主机名称 IP PORT SERVICE
k8s-master01 10.1.60.119 16443、6443 kubeadm、kubectl、kubelet、docker、cri-docker、keepalived、haproxy、etcd
k8s-master02 10.1.60.120 16443、6443 kubeadm、kubectl、kubelet、docker、cri-docker、keepalived、haproxy、etcd
k8s-master03 10.1.60.121 16443、6443 kubeadm、kubectl、kubelet、docker、cri-docker、keepalived、haproxy、etcd
k8s-node01 10.1.60.122 kubeadm、kubectl、kubelet、docker、cri-docker
k8s-node02 10.1.60.123 kubeadm、kubectl、kubelet、docker、cri-docker

3.系统基础环境配置(所有主机均要配置)

3.1关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

3.2关闭selinux服务

setenforce 0  #临时关闭

sed -i 's/enforcing/disabled/' /etc/selinux/config #永久关闭

3.3关闭系统交换分区

swapoff -a #临时关闭

sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久关闭

3.4设置主机名称(每台主机名称不一样按照表格上的主机名填)

hostnamectl set-hostname k8s-master01

3.5编辑hosts文件

cat > /etc/hosts << EOF

10.1.60.119 k8s-master01

10.1.60.120 k8s-master01

10.1.60.121 k8s-master01

10.1.60.122 k8s-node01

10.1.60.123 k8s-node02

10.1.60.124 k8s-mastervip

EOF

3.6配置时间同步

yum -y install chrony

systemctl strat chronyd && systemctl enbale chronyd

3.7配置ipvs

cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

#授权并生效ipvs配置

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules

yum install -y ipset ipvsadm

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf

overlay

br_netfilter

EOF

sudo modprobe overlay && sudo modprobe br_netfilter

3.8将桥接的IPv4流量传递到iptables

cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

 sysctl --system  #配置生效

4.安装docker服务

4.1下载docker yum源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

 4.2安装docker服务

yum -y install docker-ce

4.3启用docker并配置开机启动

systemctl start docker && systemctl enable docker

4.4配置docker镜像加速

cat > /etc/docker/daemon.json << EOF

{
  "registry-mirrors": ["https://sudzwtcw.mirror.aliyuncs.com"],

  "exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

4.5重启docker服务

systemctl restart docker

4.6下载cri-dockerd rpm包

 wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm

4.7安装rpm包

rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm

4.8配置cri-docker服务依赖镜像地址

vi /usr/lib/systemd/system/cri-docker.service

注释以下配置项
#ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://
新增以下配置项
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7

4.9加载配置项服务,并配置cri-docker开机自启

systemctl daemon-reload

systemctl start cri-docker && systemctl enable cri-docker

5.安装k8s管理软件

5.1配置k8s yum源

cat > /etc/yum.repos.d/kubernetes.repo << EOF

[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

5.2安装k8s管理软件

yum -y install kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0

systemctl enable kubelet

至此k8s基础环境已经配置完成,以上所有操作每台主机都要执行,也可以配置好一台主机后将环境复制,再更改一下即可

6.配置所有主机互相免密登录

ssh-keygen   #一路按回车键即可

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.60.120   #将公钥拷贝到120主机上,实现免密登录

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.60.121

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.60.122

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.1.60.123

#其余主机也按照上面的免密配置
7.配置haproxy服务(只在三台master主机上执行)

7.1安装haproxy服务

yum -y install haproxy

7.2备份haproxy配置文件

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

7.3编辑haproxy配置文件

vi /etc/haproxy/haproxy.cfg

global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats


defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 1
    timeout http-request    10s
    timeout queue           20s
    timeout connect         5s
    timeout client          20s
    timeout server          20s
    timeout http-keep-alive 10s
    timeout check           10s
#    maxconn                 3000


#frontend  main *:5000
#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
#    acl url_static       path_end       -i .jpg .gif .png .css .js
#
#    use_backend static          if url_static
#    default_backend             app
#

frontend apiserver
    bind *:16443   #配置负载均衡监听端口
    mode tcp
    option tcplog
    default_backend apiserver   #调用backend配置


backend apiserver
    option httpchk GET /healthz
    http-check expect status 200
    mode tcp
    option ssl-hello-chk
    balance   roundrobin
        server  k8s-master01 10.1.60.119:6443 check   #配置apiserver的端口
        server  k8s-master02 10.1.60.120:6443 check
        server  k8s-master03 10.1.60.121:6443 check

 三台master节点haproxy的配置文件都一样

7.4启动haproxy服务并配置开机启动

systemctl start haproxy && systemctl enable haproxy

7.5查看haproxy配置是否生效

netstat -tlpn

kubeadm 高可用集群,kubernetes,kubernetes,docker,容器

8.配置keepalived服务 (只在三台master主机上执行)

8.1安装keepalived服务

yum -y install keepalived

8.2备份keepalived配置文件

cp /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.bak

8.3编辑keepalived配置文件

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   script_user root
   enable_script_security
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id k8s-master01
  #vrrp_skip_check_adv_addr
  #vrrp_strict
  #vrrp_garp_interval 0
  #vrrp_gna_interval 0
}

vrrp_script check_haproxy {
   script "/etc/keepalived/check-haproxy.sh"
   interval 3
   weight -2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 53
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.1.60.124/24
    }
    track_script {
        check_haproxy
    }
}

这是119 master节点的配置文件,另外两个文件只需要修改以下内容即可,其余内容都和上面的配置文件一致

另外两个节点中只需要修改上面119 master配置文件中的以下三项即可

120 master

router_id k8s-master02

state BACKUP

priority 90

121 master

router_id k8s-master03

state BACKUP

priority 80

 8.4编辑keepalived配置文件中的监控脚本

vi /etc/keepalived/check-haproxy.sh

#!/bin/bash
a=`netstat -tlpn |grep :16443|grep -v grep|wc -l`
if [ $a -eq 0 ]; then
   systemctl start haproxy
   sleep 3
   if [ $a -eq 0 ]; then
      systemctl stop keepalived
   fi
fi

8.5给脚本授权

chmod +x /etc/keepalived/check-haproxy.sh

8.6启动keepalived服务并配置开机自启

systemctl start keepalived && systemctl enable keepalived

8.7在119 master节点查看虚拟ip是否生效

ip add

kubeadm 高可用集群,kubernetes,kubernetes,docker,容器

9. 初始化k8s集群(只在119节点上执行)

kubeadm init --control-plane-endpoint=10.1.60.124:16443 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.26.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --upload-certs

--control-plane-endpoint: 指定 Kubernetes 控制平面的 IP 地址和端口号,这个 IP 地址是集群中某个节点的 IP 地址,这个节点将会成为 Kubernetes 控制平面的主节点,填写虚拟的vip地址和haproxy的负载均衡端口

--image-repository:指定 Kubernetes 组件镜像所在的仓库地址。这里使用的是阿里云的镜像仓库,这样可以加速 Kubernetes 组件的下载和安装

--kubernetes-version: 指定 Kubernetes 的版本号,这里使用的是 v1.26.0 版本

--service-cidr: 指定 Kubernetes Service 的 IP 地址段。这个 IP 地址段用于分配给 Service,用于 Service 之间的通信

--pod-network-cidr: 指定 Kubernetes Pod 的 IP 地址段。这个 IP 地址段用于分配给 Pod,用于 Pod 之间的通信

--cri-socket: 指定容器运行时的 Socket 文件路径,这里使用的是 Docker 的 CRI

--upload-certs: 上传控制平面证书。这个参数会在初始化控制平面节点时自动生成证书,并将证书上传到 etcd 中,以确保集群的安全性

集群初始化完成后会输出一部分内容需要按照提示执行,我这里忘记截图了,执行的内容为以下步骤,需要执行完后节点才生效

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

执行完后查看节点状态

kubectl get nodes

此时已经可以查看到master节点,但是状态还是notready,这是因为还没有安装网络插件

10.将另外两个控制节点加入集群

10.1在120 master节点上新建以下目录

mkdir -p /etc/kubernetes/pki/etcd/

10.2在119 master节点上执行以下命令拷贝证书到120 master节点上

scp /etc/kubernetes/pki/ca.crt root@10.1.60.120:/etc/kubernetes/pki/

scp /etc/kubernetes/pki/ca.key root@10.1.60.120:/etc/kubernetes/pki/

scp /etc/kubernetes/pki/sa.key root@10.1.60.120:/etc/kubernetes/pki/

scp /etc/kubernetes/pki/sa.pub root@10.1.60.120:/etc/kubernetes/pki/

scp /etc/kubernetes/pki/front-proxy-ca.crt root@10.1.60.120:/etc/kubernetes/pki/

scp /etc/kubernetes/pki/front-proxy-ca.key root@10.1.60.120:/etc/kubernetes/pki/

scp /etc/kubernetes/pki/etcd/ca.crt root@10.1.60.120:/etc/kubernetes/pki/etcd/

scp /etc/kubernetes/pki/etcd/ca.key root@10.1.60.120:/etc/kubernetes/pki/etcd/

10.3在119 master查看加入集群的token

kubeadm token create --print-join-command

10.4在120 master执行以上输出的token并增加一些参数加入集群

kubeadm join 10.1.60.124:16443 --token zj1hy1.ufpwaj7wxhymdw3a --discovery-token-ca-cert-hash sha256:9636d912ddb2a9b1bdae085906c11f6839bcf060f8b9924132f6d82b8aaefecd --control-plane --cri-socket unix:///var/run/cri-dockerd.sock

--control-plane:是以控制节点的身份加入集群,不增加此参数是以工作节点的身份加入集群

--cri-socket:指定容器引擎

10.5执行加入集群后的目录创建(执行完上一步的命令后会输出提示)

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

10.6执行以下命令查看是否加入成功

kubectl get nodes

剩下的121 master节点重复以上的步骤加入集群即可

11.将工作节点加入集群

11.1在任意master节点上执行以下命令查看加入集群的token

kubeadm token create --print-join-command

11.2执行master节点生成的token并增加一些参数加入集群

kubeadm join 10.1.60.124:16443 --token zj1hy1.ufpwaj7wxhymdw3a --discovery-token-ca-cert-hash sha256:9636d912ddb2a9b1bdae085906c11f6839bcf060f8b9924132f6d82b8aaefecd  --cri-socket unix:///var/run/cri-dockerd.sock

可以看到控制节点加入集群和工作节点加入集群的区别就是有无--control-plane参数

11.3在任意master节点上执行以下命令查看集群信息

kubectl get nodes

每个node节点都执行以上步骤即可加入集群

12.安装网络插件

下载flannel的yaml文件

wget https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml

使用此yaml文件

kubectl create -f kube-flannel.yml

等flannel容器都运行,可通过以下命令查看

kubectl get pods -n kube-flannel

flannel都启动后查看集群状态就可以看到都已经是ready了

kubectl get nodes
13.配置etcd为高可用

13.1编辑etcd yaml文件(每台master节点均需执行)

vi /etc/kubernetes/manifests/etcd.yaml

更改以下配置项 
- --initial-cluster=k8s-master01=https://10.1.60.119:2380
更改为以下内容
- --initial-cluster=k8s-master01=https://10.1.60.119:2380,k8s-master02=https://10.1.60.120:2380,k8s-master03=https://10.1.60.121:2380

13.2重启kubelet服务(每台master节点均需执行)

systemctl restart kubelet

13.3运行etcd容器(在任意控制节点执行)

docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0 etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key --cacert /etc/kubernetes/pki/etcd/ca.crt member list

13.4查看etcd集群状态

docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0 etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key --cacert /etc/kubernetes/pki/etcd/ca.crt --endpoints=https://10.1.60.119:2379,https://10.1.60.120:2379,https://10.1.60.121:2379 endpoint health --cluster

 docker run --rm -it --net host -v /etc/kubernetes:/etc/kubernetes registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0 etcdctl -w table --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key --cacert /etc/kubernetes/pki/etcd/ca.crt --endpoints=https://10.1.60.119:2379,https://10.1.60.120:2379,https://10.1.60.121:2379 endpoint status --cluster

至此k8s高可用集群配置完成 文章来源地址https://www.toymoban.com/news/detail-667030.html

到了这里,关于kubeadm部署k8s 1.26.0版本高可用集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Kubernetes】kubeadm安装k8s1.25.0高可用集群

    详情请参考 : 【Kubernetes】kubeadm安装k8s稳定版(1.23.1)高可用集群 这里不再赘述 这部分内容还没发布。。。后续有空再整理更新啦。 master、node节点都需要操作 docker也要安装,docker跟containerd不冲突,安装docker是为了能基于dockerfile构建镜像。 master、node节点都需要操作 3台机

    2024年01月16日
    浏览(55)
  • Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)

    1.高可用k8s集群架构(多master) 2.安装硬件要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 注: 这里属于教学环境,所以使用三台虚拟机模拟实现。 3.部署规划 4.部署前准备 (1).关闭防火墙 (2).关闭selinux (3).关闭swap (4).根据规

    2024年02月10日
    浏览(45)
  • kubeadm方式部署k8s最新版本V1.26.2

    Kubernetes核心概念 Master主要负责资源调度,控制副本,和提供统一访问集群的入口。--核心节点也是管理节点 Node是Kubernetes集群架构中运行Pod的服务节点。Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机,由Master管理,并汇报容器状态给Master,同时

    2024年02月05日
    浏览(74)
  • Kubeadm方式搭建K8s高可用集群【1.23.0版本】

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 备注 master-1 16.32.15.200 CentOS7.8 安装keepalived、nginx实现高可用 master-2 16.32.15.201 CentOS7.8 安装keepalived、

    2023年04月22日
    浏览(55)
  • Kubeadm - K8S1.20 - 高可用集群部署(博客)

    1.系统设置 注意事项: master节点cpu核心数要求大于2 ●最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳 ●学会一个版本的 高可用部署,其他版本操作都差不多 ●宿主机尽量升级到CentOS 7.9 ●内核kernel升级到 4.19+ 这种稳定的内核 ●部署k8

    2024年02月05日
    浏览(43)
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群

    这里我们配置一个 单master集群 。( 一个Master节点,多个Node节点 ) 1.硬件环境准备 一台或多台机器,操作系统 CentOS7.x-86_x64 。这里我们使用安装了CentOS7的三台虚拟机 硬件配置 : 2GB或更多RAM , 2个CPU或更多CPU , 硬盘30GB或更多 2.主机名称和IP地址规划 3. 初始化准备工作 (1).关

    2024年02月10日
    浏览(58)
  • Kubernetes(K8s)从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群

    默认情况下,kubeadm 在每个控制平面节点上运行一个本地 etcd 实例。也可以使用外部的 etcd 集群,并在不同的主机上提供 etcd 实例。 可以设置HA集群: 使用堆叠控制控制平面节点,其中 etcd 节点与控制平面节点共存 使用外部 etcd 节点,其中 etcd 在与控制平面不同的节点上运行

    2024年02月14日
    浏览(55)
  • Kubeadm高可用部署K8S 1.24版本---保姆级超详细!!!

    目录 一、前言 二、基础环境部署 1)前期准备(所有节点) 1、修改主机名和配置 hosts 2、配置 ssh 互信 3、时间同步 4、关闭防火墙 5、关闭 swap 6、禁用 SELinux 7、允许 iptables 检查桥接流量(可选,所有节点) 2)安装容器 docker(所有节点) 3)配置 k8s yum 源(所有节点) 4)

    2023年04月14日
    浏览(43)
  • CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】

    好消息好消息,阿里云全线降价,大量服务提供免费甚至永久的试用,赶紧来薅大厂羊毛吧,坐电梯即可直达! 送福利!阿里云热门产品免费领(含ECS),点击进入 :https://click.aliyun.com/m/1000370359/ 送福利!阿里云热门产品免费领(含ECS),点击进入 :https://click.aliyun.com/m/

    2023年04月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包