前置知识点：目前生产部署Kubernetes 集群主要有两种方式：kubeadmKubeadm 是一个K8s 部署工具，提供kubeadm init 和kubeadm join，用于快速部署Kubernetes 集群。官方地址：https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/二进制包从github 下载发行版的二进制包，手动部署每个组件，组成Kubernetes 集群。Kubeadm 降低部署门槛，但屏蔽了很多细节，遇到问题很难排查。如果想更容易可控，推荐使用二进制包部署Kubernetes 集群，虽然手动部署麻烦点，期间可以学习很多工作原理，也利于后期维护。kubeadm 部署方式介绍：kubeadm 是官方社区推出的一个用于快速部署kubernetes 集群的工具，这个工具能通过两条指令完成一个kubernetes 集群的部署：创建一个Master 节点kubeadm init将Node 节点加入到当前集群中$ kubeadm join 安装要求：在开始之前，部署Kubernetes 集群机器需要满足以下几个条件：一台或多台机器，操作系统CentOS7.x-86_x64 （本文以7.5）硬件配置：2GB 或更多RAM，2 个CPU 或更多CPU，硬盘30GB 或更多集群中所有机器之间网络互通可以访问外网，需要拉取镜像禁止swap 分区最终目标：在所有节点上安装Docker 和kubeadm部署Kubernetes Master部署容器网络插件部署Kubernetes Node，将节点加入Kubernetes 集群中部署Dashboard Web 页面，可视化查看Kubernetes 资源准备环境：master： 192.168.10.100 组件 ：docker，kubectl，kubeadm，kubeletnode1： 192.168.10.101 组件 ：docker，kubectl，kubeadm，kubeletnode2： 192.168.10.102 组件 ：docker，kubectl，kubeadm，kubelet环境初始化(3台机器都要部署):1 检查操作系统的版本: # 此方式下安装kubernetes集群要求Centos版本要在7.5或之上 [root@master ~]# cat /etc/redhat-release Centos Linux 7.5.1804 (Core) 2 主机名解析:为了方便集群节点间的直接调用，在这个配置一下主机名解析，企业中推荐使用内部DNS服务器 # 主机名成解析 编辑三台服务器的/etc/hosts文件，添加下面内容 192.168.10.100 master 192.168.10.101 node1 192.168.10.102 node2 3 时间同步：kubernetes要求集群中的节点时间必须精确一直，这里使用chronyd服务从网络同步时间企业中建议配置内部的会见同步服务器 # 启动chronyd服务 [root@master ~]# systemctl start chronyd [root@master ~]# systemctl enable chronyd [root@master ~]# date 4 禁用iptable和firewalld服务：kubernetes和docker 在运行的中会产生大量的iptables规则，为了不让系统规则跟它们混淆，直接关闭系统的规则 # 1 关闭firewalld服务 [root@master ~]# systemctl stop firewalld [root@master ~]# systemctl disable firewalld # 2 关闭iptables服务 [root@master ~]# systemctl stop iptables [root@master ~]# systemctl disable iptables 5 禁用selinux：selinux是linux系统下的一个安全服务，如果不关闭它，在安装集群中会产生各种各样的奇葩问题 # 编辑 /etc/selinux/config 文件，修改SELINUX的值为disable # 注意修改完毕之后需要重启linux服务 SELINUX=disabled 6 禁用swap分区：swap分区指的是虚拟内存分区，它的作用是物理内存使用完，之后将磁盘空间虚拟成内存来使用，启用swap设备会对系统的性能产生非常负面的影响，因此kubernetes要求每个节点都要禁用swap设备，但是如果因为某些原因确实不能关闭swap分区，就需要在集群安装过程中通过明确的参数进行配置说明 # 编辑分区配置文件/etc/fstab，注释掉swap分区一行 # 注意修改完毕之后需要重启linux服务 vim /etc/fstab 注释掉 /dev/mapper/centos-swap swap # /dev/mapper/centos-swap swap 7 修改linux的内核参数： # 修改linux的内核采纳数，添加网桥过滤和地址转发功能 # 编辑/etc/sysctl.d/kubernetes.conf文件，添加如下配置： net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 # 重新加载配置 [root@master ~]# sysctl -p # 加载网桥过滤模块 [root@master ~]# modprobe br_netfilter # 查看网桥过滤模块是否加载成功 [root@master ~]# lsmod | grep br_netfilter 8 配置ipvs功能：在Kubernetes中Service有两种带来模型，一种是基于iptables的，一种是基于ipvs的两者比较的话，ipvs的性能明显要高一些，但是如果要使用它，需要手动载入ipvs模块 # 1.安装ipset和ipvsadm [root@master ~]# yum install ipset ipvsadm -y # 2.添加需要加载的模块写入脚本文件 [root@master ~]# cat