> (二)手动部署k8s之-系统初始化和全局变量 原教程来自 [github/opsnull](https://github.com/opsnull/follow-me-install-kubernetes-cluster), 现在此基础上记录自己搭建遇到的问题 #### 集群机器 master - slave-31 192.168.1.31 - slave-32 192.168.1.32 - slave-33 192.168.1.33 slave - slave-34 192.168.1.34 - slave-35 192.168.1.35 - slave-36 192.168.1.36 注意 - 需要在所有机器上执行本文档的初始化命令 - 需要使用 root 账号执行这些命令 - 如果没有特殊指明,本文档的所有操作均在 slave-31 节点上执行,然后远程分发文件和执行命令 #### 主机名 设置永久主机名,然后重新登录 ``` hostnamectl set-hostname slave-31 # 将 slave-31 替换为当前主机名 ``` 使用主机名通信,修改/etc/hosts ``` [root@ _5_ ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168.1.31 slave-31 192.168.1.32 slave-32 192.168.1.33 slave-33 ``` 推送/etc/hosts到slave-32, slave-33 ``` scp /etc/hosts root@192.168.1.32:/etc/hosts scp /etc/hosts root@192.168.1.33:/etc/hosts ``` #### 添加docker账户 在每台机器上添加docker账户 ``` useradd -m docker ``` #### 无密码 ssh 登录其它节点 如果没有特殊指明,本文档的所有操作均在 slave-31 节点上执行,然后远程分发文件和执行命令,所以需要添加该节点到其它节点的 ssh 信任关系。 设置 slave-31 的 root 账户可以无密码登录所有节点 ``` ssh-keygen -t rsa ssh-copy-id root@slave-31 ssh-copy-id root@slave-32 ssh-copy-id root@slave-33 ``` #### 更新PATH环境变量 在每台机器上将可执行文件目录添加到PATH环境变量中 ``` echo 'PATH=/opt/k8s/bin:$PATH' >>/root/.bashrc source /root/.bashrc ``` #### 安装依赖包 CentOS: ``` yum install -y epel-release yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget ``` - ipvs 依赖 ipset; - ntp 保证各机器系统时间同步; #### 关闭防火墙 在每台机器上关闭防火墙,清理防火墙规则,设置默认转发策略 ``` systemctl stop firewalld systemctl disable firewalld iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat iptables -P FORWARD ACCEPT ``` #### 关闭swap交换分区 如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为 false 来忽略 swap on),故需要在每 ``` swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab ``` #### 关闭SELinux 关闭 SELinux,否则后续 K8S 挂载目录时可能报错 Permission denied: ``` setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config ``` #### 关闭dnsmasq(可选) linux 系统开启了 dnsmasq 后(如 GUI 环境),将系统 DNS Server 设置为 127.0.0.1,这会导致 docker 容器无法解析域名,需要关闭它: ``` systemctl stop dnsmasq systemctl disable dnsmasq ``` #### 加载内核模块 ``` modprobe ip_vs_rr modprobe br_netfilter ``` #### 优化内核参数 ``` cd /etc/sysctl.d/ cat > kubernetes.conf < /etc/systemd/journald.conf.d/99-prophet.conf < GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rhgb quiet numa=off" ``` 重新生成 grub2 配置文件 ``` cp /boot/grub2/grub.cfg{,.bak} grub2-mkconfig -o /boot/grub2/grub.cfg ``` #### 分发集群配置参数脚本 后续使用的环境变量都定义在文件 environment.sh 中,请根据自己的机器、网络情况修改。然后,把它拷贝到所有节点的 /opt/k8s/bin 目录 ``` source environment.sh for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp environment.sh root@${node_ip}:/opt/k8s/bin/ ssh root@${node_ip} "chmod +x /opt/k8s/bin/*" done ``` Last modification:August 5th, 2019 at 05:03 pm © 允许规范转载 Support 如果觉得我的文章对你有用 ×Close Appreciate the author Sweeping payments