• 【k8s第一步】Kubernetes-Linux系统初始化【已修正错误】


    ⒈配置Linux的IP地址

    vim /etc/sysconfig/network-scripts/ifcfg-ens33v

      ifcfg-ens33是网卡的最新命名规范,它会从BIOS => PCIE通道里获取它的网卡文件名,如果都没有的话,再降级到eth0或者eth1的命名方式,如果需要关闭的话,ifnames=0就可以关闭了。和以前的配置文件修改方式类似。

    ⒉设置主机名

    hostnamectl set-hostname {hostName}

      在大型集群环境中建议大家通过DNS的方式,让主机名和IP之间能够相互解析,当然也可以通过修改host文件进行配置。

      小环境中不建议大家通过DNS的方式,如果DNS挂掉的话那么集群环境也就挂掉了。

    ⒊修改host文件【非集群环境可省略】

    vim /etc/hosts

    **在Linux之间相互拷贝文件

    #输入完此命令后输入yes,并输入node01的root密码即可复制成功
    scp /etc/hosts root@k8s-node01:/etc/hosts

    ⒋将yum云修改为163【暂略】

    ⒌安装依赖包

    yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

    ⒍设置防火墙为lptables 并设置空规则

    #关闭firewalld并取消自启动
    systemctl stop firewalld && systemctl disable firewalld
    
    #安装iptables,启动iptables,设置开机自启,清空iptables规则,保存当前规则到默认规则
    yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

    ⒎关闭SELINUX

      1.关闭swap分区

    #关闭swap分区【虚拟内存】并且永久关闭虚拟内存。
    swapoff -a && sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab

      **kubeadm初始化Kubernetes时的过程中会检测swap分区到底有没有关闭,因为如果开启虚拟内存的话,kubernetes的容器【pod】就有可能会运行在虚拟内存上,会大大的降低容器的工作效率,因此Kubernetes会要求强制关闭,可以通过kubelet的启动参数--fail-swap-on=false更改这个限制。推荐关闭以防止容器运行在虚拟内存的情况出现。

      2.关闭SELinux

    setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

    ⒏相对于Kubernetes调整内核参数

    cat > 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
    #禁止使用swap空间,只有当系统OOM时才允许使用它 
    vm.swappiness=0
    #不检查物理内存是否够用
    vm.overcommit_memory=1
    #开启OOM 
    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 
    #关闭ipv6【重要】
    net.ipv6.conf.all.disable_ipv6=1 
    net.netfilter.nf_conntrack_max=2310720 
    EOF 
    #将优化内核文件拷贝到/etc/sysctl.d/文件夹下,这样优化文件开机的时候能够被调用
    cp kubernetes.conf /etc/sysctl.d/kubernetes.conf 
    #手动刷新,让优化文件立即生效
    sysctl -p /etc/sysctl.d/kubernetes.conf

      ***非Linux4的内核下,将会弹出“sysctl:cannot stat /proc/sys/net/netfilter/nf_conntrack_max:没有那个文件或目录”,无视即可。

    ⒐调整系统时区

    #设置系统时区为中国/上海
    timedatectl set-timezone Asia/Shanghai 
    #将当前的 UTC 时间写入硬件时钟 
    timedatectl set-local-rtc 0
    #重启依赖于系统时间的服务 
    systemctl restart rsyslog 
    systemctl restart crond

    ⒑关闭系统不需要的服务

    #关闭及禁用邮件服务
    systemctl stop postfix && systemctl disable postfix

    ⒒设置日志的保存方式

      在Centos7以后,因为引导方式改为了system.d,所以有两个日志系统同时在工作,默认的是rsyslogd,以及systemd journald

      使用systemd journald更好一些,因此我们更改默认为systemd journald,只保留一个日志的保存方式。

      1.创建保存日志的目录

    mkdir /var/log/journal

      2.创建配置文件存放目录

    mkdir /etc/systemd/journald.conf.d

      3.创建配置文件

    cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
    [Journal] 
    #持久化保存到磁盘 
    Storage=persistent 
    
    #压缩历史日志 
    Compress=yes 
    
    SyncIntervalSec=5m 
    RateLimitInterval=30s 
    RateLimitBurst=1000 
    
    #最大占用空间10G 
    SystemMaxUse=10G 
    
    #单日志文件最大200M 
    SystemMaxFileSize=200M 
    
    #日志保存时间2周 
    MaxRetentionSec=2week 
    
    #不将日志转发到syslog 
    ForwardToSyslog=no
    EOF

      4.重启systemd journald的配置

    systemctl restart systemd-journald

    ⒓升级Linux内核为4.44版本

      CentOS 7.x 系统自带的3.10.x内核存在一些Bugs.导致运行的Docker.Kubernetes不稳定。

      1.获取源

    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

      2.开始安装,安装完成后检查 /boot/grub2/grub.cfg中对应内核menuentry中是否包含 initrd16 配置,如果没有,再安装一次!

    yum --enablerepo=elrepo-kernel install -y kernel-lt 

      3.查看系统中的全部内核【可忽略】

    rpm -qa | grep kernel

    3.设置开机从新内核启动 

    grub2-set-default 'CentoS Linux(4.4.202-1.el7.elrepo.×86_64) 7 (Core)'

     ⒔重启启动使配置生效

    reboot

    ⒕查看正在使用的内核【可忽略】

    uname -a

    *Linux内核相关操作操作可查看  https://www.cnblogs.com/fanqisoft/p/11301630.html

  • 相关阅读:
    Word中封面的问题
    UML问题
    《十八岁的天空》有感
    SPSS相关和回归分析
    WinForm自定义验证控件
    .NET常用的扩展方法整理
    C# 对JS编码/解码进行转换
    Jquery AJAX 调用WebService服务
    多条件动态LINQ 组合查询
    Visual studio 2008 的语法高亮插件 WordLight
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/11498049.html
Copyright © 2020-2023  润新知