【k8s集群应用】kubeadm1.20高可用部署(3master)

Kubeadm - K8S1.20 - 高可用集群部署

注意
master节点cpu核心数要求大于2

  • 最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳
  • 学会一个版本的 高可用部署,其他版本操作都差不多
  • 宿主机尽量升级到CentOS 7.9
  • 内核kernel升级到 4.19+ 这种稳定的内核
  • 部署k8s版本时,尽量找 1.xx.5 这种大于5的小版本(这种一般是比较稳定的版本)

Kubernetes 环境准备

1. 基础配置

  • 关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 关闭 SELinux
    setenforce 0
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    
  • 清空 iptables 规则
    iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
    
  • 关闭 swap 交换
    swapoff -a
    sed -ri 's/.*swap.*/#&/' /etc/fstab
    

2. 修改主机名

  • 主机名设置
    # 在 master01 上
    hostnamectl set-hostname master01
    # 在 master02 上
    hostnamectl set-hostname master02
    # 在 master03 上
    hostnamectl set-hostname master03
    # 在 node01 上
    hostnamectl set-hostname node01
    # 在 node02 上
    hostnamectl set-hostname node02
    

3. 修改 hosts 文件

  • 添加 IP 映射
    vim /etc/hosts
    # 添加以下内容
    192.168.80.10 master01
    192.168.80.11 master02
    192.168.80.12 master03
    192.168.80.20 node01
    192.168.80.30 node02
    

4. 时间同步

  • 安装 ntpdate
    yum -y install ntpdate
    
  • 设置时区
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    echo 'Asia/Shanghai' >/etc/timezone
    
  • 同步时间
    ntpdate time2.aliyun.com
    
  • 设置定时任务
    systemctl enable --now crond
    crontab -e
    # 添加以下内容
    */30 * * * * /usr/sbin/ntpdate time2.aliyun.com
    

5. Linux 资源限制

  • 修改 limits.conf
    vim /etc/security/limits.conf
    # 添加以下内容
    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 65535
    * hard nproc 655350
    * soft memlock unlimited
    * hard memlock unlimited
    

6. 升级内核

  • 下载内核 RPM 包
    wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm -O /opt/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm
    wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm -O /opt/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm
    
  • 安装内核
    cd /opt/
    yum localinstall -y kernel-ml*
    
  • 设置默认内核并重启
    grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
    grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
    grubby --default-kernel
    reboot
    

7. 调整内核参数

  • 创建 k8s.conf
    cat > /etc/sysctl.d/k8s.conf <<EOF
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    fs.may_detach_mounts = 1
    vm.overcommit_memory=1
    vm.panic_on_oom=0
    fs.inotify.max_user_watches=89100
    fs.file-max=52706963
    fs.nr_open=52706963
    net.netfilter.nf_conntrack_max=2310720
    
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.tcp_keepalive_probes = 3
    net.ipv4.tcp_keepalive_intvl =15
    net.ipv4.tcp_max_tw_buckets = 36000
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_max_orphans = 327680
    net.ipv4.tcp_orphan_retries = 3
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_syn_backlog = 16384
    net.ipv4.ip_conntrack_max = 65536
    net.ipv4.tcp_max_syn_backlog = 16384
    net.ipv4.tcp_timestamps = 0
    net.core.somaxconn = 16384
    EOF
    
  • 生效参数
    sysctl --system
    

8. 加载 ip_vs 模块

  • 加载模块
    for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
    

Kubernetes 集群部署

在所有节点上安装 Docker

  1. 安装必要的依赖包
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  2. 添加 Docker 仓库
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  3. 安装 Docker
    yum install -y docker-ce docker-ce-cli containerd.io
    
  4. 配置 Docker
    • 创建 Docker 配置文件目录:
      mkdir /etc/docker
      
    • 编辑 daemon.json 文件以配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值