zoukankan      html  css  js  c++  java
  • k8s v1.9.9 二进制部署高可用(1)平台规划和初始配置

    前提概要:

    ##########文档已验证,按照步骤可完整实现##########
    1.文档内部分命令前面加了$符号,避免带换行符号的命令使人混淆。
    2.Troubleshooting方面,,请仔细检查配置文件是否配置正确,而后参考命令“tail -f /var/log/messages” 或者“journalctl -u 服务名”

    1、环境规划如下

    2、机器硬件要求

    -每台机器 2 GB 或更多的 RAM 
    -2 CPU 核或更多,Master节点要求必须2核
    -集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
    -节点之中不可以有重复的主机名、MAC 地址或 product_uuid
    -禁用交换分区。为了保证 kubelet 正常工作,必须禁用交换分区
    

    3、初始化配置

    #各节点设置主机名
    hostnamectl set-hostname master-ha-10
    hostnamectl set-hostname master-ha-11
    hostnamectl set-hostname master-ha-12
    hostnamectl set-hostname node-13
    hostnamectl set-hostname node-14
    
    #各节点配置域名解析hosts文件
    cat >> /etc/hosts <<EOF
    10.0.0.10 master-ha-10
    10.0.0.11 master-ha-11
    10.0.0.12 master-ha-12
    10.0.0.10 etcd1
    10.0.0.11 etcd2
    10.0.0.12 etcd3
    10.0.0.13 node-13
    10.0.0.14 node-14
    EOF
    
    
    #设置10.0.0.10的root账户可以无密码登录所有节点的root账户,
    如果没有特殊指明,本文档的所有操作均在10.0.0.10节点上执行,然后远程分发文件和执行命令
    ssh-keygen -t rsa
    ssh-copy-id root@10.0.0.10
    ssh-copy-id root@10.0.0.11
    ssh-copy-id root@10.0.0.12
    ssh-copy-id root@10.0.0.13
    ssh-copy-id root@10.0.0.14
    
    #安装依赖包
    yum install -y vim net-tools wget ntpdate epel-release conntrack ipset sysstat curl iptables libseccomp
    
    #在每台机器上关闭防火墙,清理防火墙规则,设置默认转发策略:
    systemctl stop firewalld
    systemctl disable firewalld
    
    #如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每台机器上关闭 swap 分区。同时注释 /etc/fstab 中相应的条目,防止开机自动挂载 swap 分区:
    swapoff -a
    sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab 
    
    #关闭 SELinux,否则后续 K8S 挂载目录时可能报错 Permission denied:
    setenforce 0
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    
    #加载内核模块
    modprobe br_netfilter
    modprobe ip_vs_rr
    
    #优化内核参数
    cat > /etc/sysctl.d/kubernetes.conf <<EOF
    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
    vm.swappiness=0 
    vm.overcommit_memory=1
    vm.panic_on_oom=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
    net.netfilter.nf_conntrack_max=2310720
    EOF
    
    sysctl -p /etc/sysctl.d/kubernetes.conf
    
    注:
    vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
    vm.overcommit_memory=1 # 不检查物理内存是否够用
    vm.panic_on_oom=0 # 开启 OOM
    必须关闭 tcp_tw_recycle,否则和 NAT 冲突,会导致服务不通;
    关闭 IPV6,防止触发 docker BUG;
    
    #更新系统时间。
    ntpdate ntp1.aliyun.com #重启失效,写一个定时任务吧。
    crontab -e
    5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
    crontab -l
    
    设置系统时区
    #调整系统 TimeZone
    timedatectl set-timezone Asia/Shanghai
    #将当前的 UTC 时间写入硬件时钟
    timedatectl set-local-rtc 0
    #重启依赖于系统时间的服务
    systemctl restart rsyslog 
    systemctl restart crond
    
    #关闭无关的服务
    systemctl stop postfix && sudo systemctl disable postfix
    
    所有节点都重启下
    init 6
    
  • 相关阅读:
    MySQL 不同版本数据导入的问题
    利用 ps 命令查看进程的位置
    MySQL 重置 root 密码
    killall 中的 signal
    Kafka 的安装及启动
    TypeScript 中 Optional Chaining 和 Nullish Coalescing
    Redis 的使用
    TypeScript 中限制对象键名的取值范围
    React17 使用 JSX 的情况下无须再显式导入 React
    使用 golang 获取远程地址视频的时间
  • 原文地址:https://www.cnblogs.com/you-xiaoqing/p/14410766.html
Copyright © 2011-2022 走看看