• 一、集群规划
  • 二、初始化服务器
  • 压缩历史日志
    Compress=yes
  • 最大占用空间 10G
    SystemMaxUse=10G
  • 单日志文件最大 200M
    SystemMaxFileSize=200M
  • 日志保存时间 2 周
    MaxRetentionSec=2week
  • http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    我已经下载到百度网盘:
    链接:https://pan.baidu.com/s/1kQ48A-St03MzY2BWakad0Q
    提取码:pwcq
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    # 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次!
    yum —enablerepo=elrepo-kernel install -y kernel-lt
    # 查看内核版本
    cat /boot/grub2/grub.cfg |grep 4.4
    # 设置开机从新内核启动
    grub2-set-default ‘CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)’
    # 重启
    init 6
    # 查看内核
    uname -r
    11、kube-proxy开启ipvs的前置条件
    【所有节点都执行】
    modprobe br_netfilter
    cat > /etc/sysconfig/modules/ipvs.modules <#!/bin/bash
    ipvs_modules=”ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack”
    for kernel_module in ${ipvs_modules}; do
    /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
    if [ 0 -eq 0 ]; then
    /sbin/modprobe ${kernel_module}
    fi
    done
    EOF
    cat > /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
    EOF
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    三、Kubernetes安装
    前提条件
    下载kubernetes 离线安装包.
    下载sealos
    第一步,下载sealos最新版和kubernetes离线安装包
    本次下载sealos版本为v3.3.9-rc.10,kubernetes版本为1.22.0
    我的百度网盘:
    链接:https://pan.baidu.com/s/16T3Xo1jw8okOdK9bBMsXew
    提取码:thu7
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/05a3db657821277f5f3b92d834bbaf98-v1.22.0/kube1.22.0.tar.gz
    第二步,安装sealos工具
    chmod +x sealos && mv sealos /usr/bin
    第三步,安装高可用kubernetes
    多master HA:
    sealos init \
    —master 10.0.19.127 \
    —master 10.0.19.128 \
    —master 10.0.19.129 \
    —node 10.0.19.130 \
    —node 10.0.19.131 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    使用免密钥或者密钥对: 如果密钥对有密码, 添加–pk-passwd password
    sealos init \
    —passwd ‘123456’ \
    —master 10.0.19.127 \
    —master 10.0.19.128 \
    —master 10.0.19.129 \
    —node 10.0.19.130 \
    —node 10.0.19.131 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    自定义ssh端口号,如3222:
    sealos init —passwd ‘123456’ —master 10.0.19.127:55 \
    —master 10.0.19.128:55 \
    —master 10.0.19.129:55 \
    —node 10.0.19.130:55 \
    —node 10.0.19.131:55 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    验证集群是否安装成功
    [root@k8s-master1 ~]# kubectl get node
    NAME STATUS ROLES AGE VERSION
    k8s-master1 Ready control-plane,master 14m v1.22.0
    k8s-master2 Ready control-plane,master 13m v1.22.0
    k8s-master3 Ready control-plane,master 13m v1.22.0
    k8s-node1 Ready 12m v1.22.0
    k8s-node2 Ready 12m v1.22.0
    #可以对 node 打个标签,显示 work
    [root@xianchaomaster1 ~]# kubectl label nodes node01 node-role.kubernetes.io/work=work
    创 建 Containerd 配 置 文 件
    [root@xianchaomaster1]# mkdir -p /etc/containerd
    [root@xianchaomaster1]# containerd config default > /etc/containerd/config.toml #替换配置文件
    [root@xianchaomaster1]# sed -i “s#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g” /etc/containerd/config.toml
    [root@xianchaomaster1]# sed -i “s#SystemdCgroup = false#SystemdCgroup = true#g” /etc/containerd/config.toml
    [root@xianchaomaster1]# sed -i “s#https://registry-1.docker.io#https://registry.cn- hangzhou.aliyuncs.com#g” /etc/containerd/config.toml
    [root@xianchaomaster1 ~]# systemctl restart containerd
    清理集群
    sealos clean —all
    增加master
    sealos join —master 172.16.4.68 —master 172.16.4.69
    sealos join —master 172.16.4.68-172.16.4.70 # 或者多个连续IP
    增加node
    sealos join —node 172.16.4.56 —node 172.16.4.57
    sealos join —node 172.16.4.56-172.16.4.63 # 或者多个连续IP
    删除指定master节点
    注意clean不加任何参数会清理整个集群
    sealos clean —master 172.16.4.68 —master 172.16.4.69
    sealos clean —master 172.16.4.56-172.16.4.63 # 或者多个连续IP
    删除指定node节点
    sealos clean —node 1172.16.4.56 —node 172.16.4.57
    sealos clean —node 172.16.4.56-172.16.4.63 # 或者多个连续IP">不将日志转发到 syslog
    ForwardToSyslog=no
    EOF
    systemctl restart systemd-journald
    10、升级系统内核为 4.44
    【所有节点都执行】
    CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,例如: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    我已经下载到百度网盘:
    链接:https://pan.baidu.com/s/1kQ48A-St03MzY2BWakad0Q
    提取码:pwcq
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    # 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次!
    yum —enablerepo=elrepo-kernel install -y kernel-lt
    # 查看内核版本
    cat /boot/grub2/grub.cfg |grep 4.4
    # 设置开机从新内核启动
    grub2-set-default ‘CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)’
    # 重启
    init 6
    # 查看内核
    uname -r
    11、kube-proxy开启ipvs的前置条件
    【所有节点都执行】
    modprobe br_netfilter
    cat > /etc/sysconfig/modules/ipvs.modules <#!/bin/bash
    ipvs_modules=”ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack”
    for kernel_module in ${ipvs_modules}; do
    /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
    if [ 0 -eq 0 ]; then
    /sbin/modprobe ${kernel_module}
    fi
    done
    EOF
    cat > /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
    EOF
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    三、Kubernetes安装
    前提条件
    下载kubernetes 离线安装包.
    下载sealos
    第一步,下载sealos最新版和kubernetes离线安装包
    本次下载sealos版本为v3.3.9-rc.10,kubernetes版本为1.22.0
    我的百度网盘:
    链接:https://pan.baidu.com/s/16T3Xo1jw8okOdK9bBMsXew
    提取码:thu7
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/05a3db657821277f5f3b92d834bbaf98-v1.22.0/kube1.22.0.tar.gz
    第二步,安装sealos工具
    chmod +x sealos && mv sealos /usr/bin
    第三步,安装高可用kubernetes
    多master HA:
    sealos init \
    —master 10.0.19.127 \
    —master 10.0.19.128 \
    —master 10.0.19.129 \
    —node 10.0.19.130 \
    —node 10.0.19.131 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    使用免密钥或者密钥对: 如果密钥对有密码, 添加–pk-passwd password
    sealos init \
    —passwd ‘123456’ \
    —master 10.0.19.127 \
    —master 10.0.19.128 \
    —master 10.0.19.129 \
    —node 10.0.19.130 \
    —node 10.0.19.131 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    自定义ssh端口号,如3222:
    sealos init —passwd ‘123456’ —master 10.0.19.127:55 \
    —master 10.0.19.128:55 \
    —master 10.0.19.129:55 \
    —node 10.0.19.130:55 \
    —node 10.0.19.131:55 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    验证集群是否安装成功
    [root@k8s-master1 ~]# kubectl get node
    NAME STATUS ROLES AGE VERSION
    k8s-master1 Ready control-plane,master 14m v1.22.0
    k8s-master2 Ready control-plane,master 13m v1.22.0
    k8s-master3 Ready control-plane,master 13m v1.22.0
    k8s-node1 Ready 12m v1.22.0
    k8s-node2 Ready 12m v1.22.0
    #可以对 node 打个标签,显示 work
    [root@xianchaomaster1 ~]# kubectl label nodes node01 node-role.kubernetes.io/work=work
    创 建 Containerd 配 置 文 件
    [root@xianchaomaster1]# mkdir -p /etc/containerd
    [root@xianchaomaster1]# containerd config default > /etc/containerd/config.toml #替换配置文件
    [root@xianchaomaster1]# sed -i “s#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g” /etc/containerd/config.toml
    [root@xianchaomaster1]# sed -i “s#SystemdCgroup = false#SystemdCgroup = true#g” /etc/containerd/config.toml
    [root@xianchaomaster1]# sed -i “s#https://registry-1.docker.io#https://registry.cn- hangzhou.aliyuncs.com#g” /etc/containerd/config.toml
    [root@xianchaomaster1 ~]# systemctl restart containerd
    清理集群
    sealos clean —all
    增加master
    sealos join —master 172.16.4.68 —master 172.16.4.69
    sealos join —master 172.16.4.68-172.16.4.70 # 或者多个连续IP
    增加node
    sealos join —node 172.16.4.56 —node 172.16.4.57
    sealos join —node 172.16.4.56-172.16.4.63 # 或者多个连续IP
    删除指定master节点
    注意clean不加任何参数会清理整个集群
    sealos clean —master 172.16.4.68 —master 172.16.4.69
    sealos clean —master 172.16.4.56-172.16.4.63 # 或者多个连续IP
    删除指定node节点
    sealos clean —node 1172.16.4.56 —node 172.16.4.57
    sealos clean —node 172.16.4.56-172.16.4.63 # 或者多个连续IP

    一、集群规划

    k8s-master1 10.0.19.127
    k8s-master2 10.0.19.128
    k8s-master3 10.0.19.129
    k8s-node1 10.0.19.130
    k8s-node2 10.0.19.131

    操作系统版本:7.3

    二、初始化服务器

    1 设置防火墙为 Iptables 并设置空规则
    【所有节点都执行】
    [root@k8s-master1 ~]# systemctl stop firewalld
    [root@k8s-master1 ~]# systemctl disable firewalld
    [root@k8s-master1 ~]# yum -y install iptables-services ipvsadm && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
    2 关闭selinux
    【所有节点都执行】
    # setenforce 0
    # vim /etc/selinux/config
    修改SELINUX=enforcing 为 SELINUX=disabled
    3 配置主机名
    【所有节点都执行】
    hostnamectl set-hostname 主机名
    4 配置名称解析
    【所有节点都执行】
    # vi /etc/hosts
    添加如下五行
    10.0.19.127 k8s-master1
    10.0.19.128 k8s-master2
    10.0.19.129 k8s-master3
    10.0.19.130 k8s-node1
    10.0.19.131 k8s-node2
    4.1配置主机之间无密码登录
    ssh-keygen #一路回车
    ssh-copy-id master01
    ssh-copy-id node01
    ssh-copy-id node02
    5 配置时间同步
    选择一个节点作为服务端,剩下的作为客户端
    master1为时间服务器的服务端
    其他的为时间服务器的客户端
    1)配置k8s-master1
    # yum install chrony -y
    # vim /etc/chrony.config
    修改三项
    server 127.127.1.0 iburst
    allow 10.0.19.0/24
    local stratum 10
    # systemctl start chronyd
    # systemctl enable chronyd
    # ss -unl | grep 123
    UNCONN 0 0 :123 :
    2)配置其他节点
    # yum install chrony -y
    # vim /etc/chrony.conf
    server 10.0.19.127 iburst
    # systemctl start chronyd
    # systemctl enable chronyd
    # chronyc sources
    210 Number of sources = 1
    MS Name/IP address Stratum Poll Reach LastRx Last sample
    ===============================================================================
    ^
    k8s-master1 10 6 17 4 +11us[ +79us] +/- 95us
    6 关闭交换分区
    【所有节点都执行】
    [root@k8s-master1 ~]# swapoff -a
    [root@k8s-master1 ~]# vim /etc/fstab
    删除一行:

    检查是否关闭成功
    [root@k8s-master1 ~]# free -m
    total used free shared buff/cache available
    Mem: 2827 157 2288 9 380 2514
    Swap: 0 0 0
    7、调整内核参数,对于 K8S
    【所有节点都执行】
    cat > kubernetes.conf <net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    net.ipv4.tcp_tw_recycle=0
    fs.inotify.max_user_instances=8192
    fs.inotify.max_user_watches=1048576
    fs.file-max=52706963
    fs.nr_open=52706963
    net.ipv6.conf.all.disable_ipv6=1
    EOF
    cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
    sysctl -p /etc/sysctl.d/kubernetes.conf
    出现,不用担心,因为没开通网桥我们后面会开通
    image.png
    8、关闭系统不需要服务,并升级systemd
    yum -y upgrade systemd #通过 centos 更新 systemd因为我的比较旧
    systemctl stop postfix && systemctl disable postfix
    9、设置 rsyslogd 和 systemd journald
    【所有节点都执行】
    mkdir /var/log/journal # 持久化保存日志的目录
    mkdir /etc/systemd/journald.conf.d
    cat > /etc/systemd/journald.conf.d/99-prophet.conf <[Journal]
    # 持久化保存到磁盘
    Storage=persistent

    压缩历史日志
    Compress=yes

    SyncIntervalSec=5m
    RateLimitInterval=30s
    RateLimitBurst=1000

    最大占用空间 10G
    SystemMaxUse=10G

    单日志文件最大 200M
    SystemMaxFileSize=200M

    日志保存时间 2 周
    MaxRetentionSec=2week

    不将日志转发到 syslog
    ForwardToSyslog=no
    EOF
    systemctl restart systemd-journald
    10、升级系统内核为 4.44
    【所有节点都执行】
    CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,例如: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    我已经下载到百度网盘:
    链接:https://pan.baidu.com/s/1kQ48A-St03MzY2BWakad0Q
    提取码:pwcq
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    # 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次!
    yum —enablerepo=elrepo-kernel install -y kernel-lt
    # 查看内核版本
    cat /boot/grub2/grub.cfg |grep 4.4
    # 设置开机从新内核启动
    grub2-set-default ‘CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)’
    # 重启
    init 6
    # 查看内核
    uname -r
    11、kube-proxy开启ipvs的前置条件
    【所有节点都执行】
    modprobe br_netfilter
    cat > /etc/sysconfig/modules/ipvs.modules <#!/bin/bash
    ipvs_modules=”ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack”
    for kernel_module in ${ipvs_modules}; do
    /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
    if [ 0 -eq 0 ]; then
    /sbin/modprobe ${kernel_module}
    fi
    done
    EOF
    cat > /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
    EOF
    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    三、Kubernetes安装
    前提条件
    下载kubernetes 离线安装包.
    下载sealos
    第一步,下载sealos最新版和kubernetes离线安装包
    本次下载sealos版本为v3.3.9-rc.10,kubernetes版本为1.22.0
    我的百度网盘:
    链接:https://pan.baidu.com/s/16T3Xo1jw8okOdK9bBMsXew
    提取码:thu7
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos
    wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/05a3db657821277f5f3b92d834bbaf98-v1.22.0/kube1.22.0.tar.gz
    第二步,安装sealos工具
    chmod +x sealos && mv sealos /usr/bin
    第三步,安装高可用kubernetes
    多master HA:
    sealos init \
    —master 10.0.19.127 \
    —master 10.0.19.128 \
    —master 10.0.19.129 \
    —node 10.0.19.130 \
    —node 10.0.19.131 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    使用免密钥或者密钥对: 如果密钥对有密码, 添加–pk-passwd password
    sealos init \
    —passwd ‘123456’ \
    —master 10.0.19.127 \
    —master 10.0.19.128 \
    —master 10.0.19.129 \
    —node 10.0.19.130 \
    —node 10.0.19.131 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    自定义ssh端口号,如3222:
    sealos init —passwd ‘123456’ —master 10.0.19.127:55 \
    —master 10.0.19.128:55 \
    —master 10.0.19.129:55 \
    —node 10.0.19.130:55 \
    —node 10.0.19.131:55 \
    —version v1.22.0 \
    —pkg-url /root/kube1.22.0.tar.gz
    验证集群是否安装成功
    [root@k8s-master1 ~]# kubectl get node
    NAME STATUS ROLES AGE VERSION
    k8s-master1 Ready control-plane,master 14m v1.22.0
    k8s-master2 Ready control-plane,master 13m v1.22.0
    k8s-master3 Ready control-plane,master 13m v1.22.0
    k8s-node1 Ready 12m v1.22.0
    k8s-node2 Ready 12m v1.22.0
    #可以对 node 打个标签,显示 work
    [root@xianchaomaster1 ~]# kubectl label nodes node01 node-role.kubernetes.io/work=work
    创 建 Containerd 配 置 文 件
    [root@xianchaomaster1]# mkdir -p /etc/containerd
    [root@xianchaomaster1]# containerd config default > /etc/containerd/config.toml #替换配置文件
    [root@xianchaomaster1]# sed -i “s#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g” /etc/containerd/config.toml
    [root@xianchaomaster1]# sed -i “s#SystemdCgroup = false#SystemdCgroup = true#g” /etc/containerd/config.toml
    [root@xianchaomaster1]# sed -i “s#https://registry-1.docker.io#https://registry.cn- hangzhou.aliyuncs.com#g” /etc/containerd/config.toml
    [root@xianchaomaster1 ~]# systemctl restart containerd
    清理集群
    sealos clean —all
    增加master
    sealos join —master 172.16.4.68 —master 172.16.4.69
    sealos join —master 172.16.4.68-172.16.4.70 # 或者多个连续IP
    增加node
    sealos join —node 172.16.4.56 —node 172.16.4.57
    sealos join —node 172.16.4.56-172.16.4.63 # 或者多个连续IP
    删除指定master节点
    注意clean不加任何参数会清理整个集群
    sealos clean —master 172.16.4.68 —master 172.16.4.69
    sealos clean —master 172.16.4.56-172.16.4.63 # 或者多个连续IP
    删除指定node节点
    sealos clean —node 1172.16.4.56 —node 172.16.4.57
    sealos clean —node 172.16.4.56-172.16.4.63 # 或者多个连续IP

    https://blog.csdn.net/a13568hki/article/details/123372707?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-123372707-blog-119184522.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-123372707-blog-119184522.pc_relevant_paycolumn_v3&utm_relevant_index=9