• KubeAdmin方式搭建K8S(1.26.0)


    本次安装K8S版本为1.26.0

    服务器环境配置

    ip描述配置
    192.168.233.221master节点CPU(2C) 内存(2G) 硬盘(50G)
    192.168.233.222node1节点CPU(2C) 内存(2G) 硬盘(50G)
    192.168.233.223node2节点CPU(2C) 内存(2G) 硬盘(50G)

    服务器环境配置准备

    服务器环境配置三台服务器都要执行下面的操作

    设置服务器主机名

    #192.168.43.201服务器执行
    hostnamectl set-hostname k8s-master
    #192.168.43.202服务器执行
    hostnamectl set-hostname k8s-node1
    #192.168.43.203服务器执行
    hostnamectl set-hostname k8s-node2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    修改host文件解析域名

    cat >> /etc/hosts << EOF
    192.168.56.100 k8s-master
    192.168.56.101  k8s-node1
    192.168.56.102  k8s-node2
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5

    配置免密登录

    #生成密钥,一路回车即可
    ssh-keygen
    #将本机密钥拷贝至目标服务器,实现免密登录
    ssh-copy-id -i ~/.ssh/id_rsa.pub K8s-master
    ssh-copy-id -i ~/.ssh/id_rsa.pub K8s-node1
    ssh-copy-id -i ~/.ssh/id_rsa.pub K8s-node2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    时间同步

    yum -y install ntp ntpdate
    
    #时间服务器可以选择:ime.nist.gov、time.nuri.net、0.asia.pool.ntp.org、1.asia.pool.ntp.org、2.asia.pool.ntp.org、3.asia.pool.ntp.org中任意一个,只要保证可用就OK
    tpdate 0.asia.pool.ntp.org
    
    #将系统时间写入硬件时间
    hwclock --systohc
    timedatectl
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    禁用iptables和firewalld服务

    kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则跟它们混淆,直接关闭系统的规则

    # 1 关闭firewalld服务
    systemctl stop firewalld
    systemctl disable firewalld
    # 2 关闭iptables服务
    systemctl stop iptables
    systemctl disable iptables
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    禁用selinux

    selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题

    # 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
    # 注意修改完毕之后需要重启linux服务
    SELINUX=disabled
    # 永久关闭
    sed -i 's/enforcing/disabled/' /etc/selinux/config 
     # 临时
    setenforce 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    禁用swap分区

    # vim /etc/fstab 分区配置文件,注释掉swap分区一行
    # 注意修改完毕之后需要重启linux服务
     UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot    xfs     defaults        0 0
     /dev/mapper/centos-home /home                      xfs     defaults        0 0
    # /dev/mapper/centos-swap swap                      swap    defaults        0 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 临时关闭swap
    swapoff -a 
    # 永久关闭swap
    sed -ri 's/.*swap.*/#&/' /etc/fstab
    
    • 1
    • 2
    • 3
    • 4

    修改linux的内核参数

    # 修改linux的内核参数,添加网桥过滤和地址转发功能
    # 创建/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    
    # 重新加载配置
    sysctl -p
    
    # 加载网桥过滤模块
    modprobe br_netfilter
    
    # 查看网桥过滤模块是否加载成功
    lsmod | grep br_netfilter
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    配置ipvs功能

    # 1 安装ipset和ipvsadm
    yum install ipset ipvsadmin -y
    
    # 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 为脚本文件添加执行权限
    chmod +x /etc/sysconfig/modules/ipvs.modules
    
    # 4 执行脚本文件
    /bin/bash /etc/sysconfig/modules/ipvs.modules
    
    # 5 查看对应的模块是否加载成功
    lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    重启服务器

    reboot
    
    • 1

    Docker和cri-dockerd安装

    三台服务器都要安装

    • CRI是Kubernetes中定义的一种标准化接口,用于与容器运行时通信,并管理容器的创建、启动、停止和销毁等操作。K8S => cri-docker => docker

    Docker安装参考博客:Centos安装docker
    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
    #创建路径
    mkdir /usr/local/cri-dockerd 
    #移动安装包至文件夹下
    mv cri-dockerd-0.3.1-3.el7.x86_64.rpm /usr/local/cri-dockerd
    #安装rpm包
    rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm
    #需要修改配置
    vim /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
    
    #修改后保存,然后重新加载,并配置cri-docker开机自启
    systemctl daemon-reload
    systemctl start cri-docker && systemctl enable cri-docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    K8S安装

    配置k8s yum源

    配置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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    安装K8s

    #安装文件
    yum install -y kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0
    #启动kubelet
    systemctl enable kubelet
    
    • 1
    • 2
    • 3
    • 4

    配置集群

    Master节点执行初始化命令

    #注意 192.168.233.221需要改成自己服务器的ip
    kubeadm init \
      --apiserver-advertise-address=192.168.233.221 \
      --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 \
      --ignore-preflight-errors=all
    #执行后稍等片刻,K8s会输出一大串提示,告诉你如果想要使用集群,需要把配置文件放到家目录下
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    #上面这三个命令必须执行,不让会提示权限问题。
    
    #init后还会输出各节点join时的命令,从节点加入时通过改命令加入
    kubeadm join 192.168.226.128:6443 --token  b3n3vs.kopnhfh0r34j7yl4 \
    --discovery-token-ca-cert-hash sha256:b3562644ef3bf180939252c79157c96850c6fa1db5dcee0f1889156508730fb9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    从节点加入集群

    #注意要制定cri-docker.sock的地址
    kubeadm join 192.168.226.128:6443 --token  b3n3vs.kopnhfh0r34j7yl4 \
    --discovery-token-ca-cert-hash sha256:b3562644ef3bf180939252c79157c96850c6fa1db5dcee0f1889156508730fb9 \
    --cri-socket=unix:///var/run/cri-dockerd.sock
    
    • 1
    • 2
    • 3
    • 4

    安装容器网络插件

    kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel

    #master节点安装 获取fannel的配置文件,这个文件是外网的,如果下载不下来可以用下面提供的文件
    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    # 使用配置文件启动flannel
    kubectl apply -f kube-flannel.yml
    
    • 1
    • 2
    • 3
    • 4

    执行完 kubectl apply后可以通过 kubectl get pods -A 查看pods是否创建成功,这里需要多等待下,等到pods的状态都为就绪状态就表示安装成功了。

    #稍等片刻再次查看集群状态
    kubectl get nodes
    
    • 1
    • 2

    K8S卸载

    #1、停止相关服务
    systemctl stop kubelet
    systemctl stop etcd
    systemctl stop docker
    
    #2、卸载k8s
    kubeadm reset -f
    
    #3、删除k8s相关目录
    modprobe -r ipip
    lsmod
    rm -rf ~/.kube/
    rm -rf /etc/kubernetes/
    rm -rf /etc/systemd/system/kubelet.service.d
    rm -rf /etc/systemd/system/kubelet.service
    rm -rf /usr/bin/kube*
    rm -rf /etc/cni
    rm -rf /opt/cni
    rm -rf /var/lib/etcd
    rm -rf /var/etcd
    
    #4、卸载k8s相关程序
    yum -y remove kube*
    
    #5、更新镜像
    yum clean all
    yum -y update
    yum makecache
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    附件

    kube-flannel.yml

    cri-dockerd安装包:后缀更改为rpm即可

    cri-dockerd-0.3.1-3.el7.x86_64.txt

  • 相关阅读:
    栈溢出至getshell分析及利用
    02、Spring中的Bean实例化、作用域、生命周期及装配方式介绍
    Acwing 3208. Z字形扫描 偏移量+扩展图
    Could not find cuda drivers on your machine
    顺利通过论文查重检测的小技巧
    又一超好用的 Python 数据处理工具 Mito 前来报到
    同轴电缆技术参数(一)
    Taro React组件开发(1) —— Overlay 遮罩层【渐入渐出动画遮罩层】
    C. Qpwoeirut And The City Codeforces Round #809 (Div. 2)
    dubbo+nacos服务器部署调用失败
  • 原文地址:https://blog.csdn.net/dndndnnffj/article/details/132575583