三,Kubernetes_v1.14.2系统初始化环境配置

一,集群机器

  • k8s-master01:172.27.128.11
  • k8s-master02:172.27.128.12
  • k8s-master03:172.27.128.13

本文档中的 etcd 集群、master 节点、worker 节点均使用这三台机器

注意:

  1. 需要在所有机器上执行本文档的初始化命令;
  2. 需要使用具有 root 权限的账号执行这些命令。

 

 

二,主机名

设置永久主机名称,然后重新登录,按照集群机器分别改名
#所有机器执行分别改名

hostnamectl set-hostname k8s-master01

 

 

三,添加hosts本地解析

如果 DNS 不支持解析主机名称,则需要修改每台机器的 /etc/hosts 文件,添加主机名和 IP 的对应关系
#所有机器执行

cat >> /etc/hosts <<EOF
172.27.128.11 k8s-master01 k8s-master01
172.27.128.12 k8s-master02 k8s-master02
172.27.128.13 k8s-master03 k8s-master03
EOF

 

 

四,无密码 ssh 登录其它节点

设置 k8s-master01 可以无密码登录所有节点的 root 账户 

ssh-keygen -t rsa
ssh-copy-id root@k8s-master01
ssh-copy-id root@k8s-master02
ssh-copy-id root@k8s-master03

 

#验证hosts本地解析是否添加成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "cat /etc/hosts | tail -3"
done

 

 

五,将可执行文件路径 /opt/kubernetes/bin 添加到 PATH 变量中

在每台机器上添加环境变量 

source /root/env.sh
for master_ip in ${MASTER_IPS[@]};
do
echo -e "\033[31m>>> ${master_ip} \033[0m";
ssh root@${master_ip} "echo "PATH=/opt/kubernetes/bin:$PATH" >> /etc/profile";
ssh root@${master_ip} "source /etc/profile";
done
#验证是否添加成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "cat /etc/profile | tail -1"
done

 

 

六,关闭防火墙

在每台机器上关闭防火墙,清理防火墙规则,设置默认转发策略

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "systemctl stop firewalld"
ssh root@${master_ip} "systemctl disable firewalld"
ssh root@${master_ip} "iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat"
ssh root@${master_ip} "iptables -P FORWARD ACCEPT"
done

 

 

七,关闭 swap 分区(可选)

如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每台机器上关闭 swap 分区。同时注释 /etc/fstab 中相应的条目,防止开机自动挂载 swap 分区

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "swapoff -a"
ssh root@${master_ip} "sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab"
done

 

 

八,关闭 SELinux

关闭 SELinux,否则后续 K8S 挂载目录时可能报错 Permission denied

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "setenforce 0"
ssh root@${master_ip} "sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config"
done

 

 

九,设置系统时区

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"

#调整系统 TimeZone
ssh root@${master_ip} "timedatectl set-timezone Asia/Shanghai"

#将当前的 UTC 时间写入硬件时钟
ssh root@${master_ip} "timedatectl set-local-rtc 0"

#重启依赖于系统时间的服务 
ssh root@${master_ip} "systemctl restart rsyslog"
ssh root@${master_ip} "systemctl restart crond"
done

 

 

十,更新系统时间

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "ntpdate cn.pool.ntp.org"
done

 

 

十一,关闭无关的服务

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "systemctl stop postfix && systemctl disable postfix"
done

 

 

十二,设置 rsyslogd 和 systemd journald

systemd 的 journald 是 Centos 7 缺省的日志记录工具,它记录了所有系统、内核、Service Unit 的日志。

相比 systemd,journald 记录的日志有如下优势:

  1. 可以记录到内存或文件系统;(默认记录到内存,对应的位置为 /run/log/jounal)
  2. 可以限制占用的磁盘空间、保证磁盘剩余空间;
  3. 可以限制日志文件大小、保存的时间;

journald 默认将日志转发给 rsyslog,这会导致日志写了多份,/var/log/messages 中包含了太多无关日志,不方便后续查看,同时也影响系统性能。

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"

#持久化保存日志的目录
ssh root@${master_ip} "mkdir /var/log/journal"
ssh root@${master_ip} "mkdir /etc/systemd/journald.conf.d"

ssh root@${master_ip} "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"

ssh root@${master_ip} "systemctl restart systemd-journald"
done
#验证是否添加成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "ls -ld /etc/systemd/journald.conf.d/99-prophet.conf"
done

 

 

十三,设置内核参数

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m >>> ${master_ip} \033[0m"

ssh root@${master_ip} "cat > /etc/sysctl.d/kubernetes.conf << EOF
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
net.ipv4.ip_local_port_range = 10000 65000
fs.file-max = 2000000
vm.swappiness =0
EOF"
done
#所有机器执行
sysctl -p /etc/sysctl.d/kubernetes.conf

 

 

十四,创建目录

source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "mkdir -p /opt/kubernetes/{cfg,bin,ssl,log}"
done
#验证是否添加成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "ls -ld /opt/kubernetes/{cfg,bin,ssl,log}"
done

 

 

十五,升级内核

#所有机器执行
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
#安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次!
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "grep 'initrd16' /boot/grub2/grub.cfg"
done

#查看是否这个配置 initrd16 /boot/initramfs-4.4.180-2.el7.elrepo.x86_64.img 

#所有机器执行
#设置开机从新内核启动
grub2-set-default 0

#重启机器
reboot
#重启后,验证内核是否升级成功
source /root/env.sh
for master_ip in ${MASTER_IPS[@]}
do
echo -e "\033[31m>>> ${master_ip} \033[0m"
ssh root@${master_ip} "uname -r"
done

#查看是否 4.4.180-2.el7.elrepo.x86_64

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值