目录
1 环境准备
1.1集群节点说明
1.2 主机关联设置
1.3网络环境设置
1.4集群详情
1.5 部署步骤
1.6 注意事项
K8S对底层机器只有三点要求:
一是正确的操作系统,Ubuntu 16.04 / Debian9/CentOS 7/RHEL7/Fedora 25 / HypriotOS v1.0.1 其中一个都可以。比较常见的是Ubuntu或者CentOs。
二是硬件配置要求你至少有1GB的内存。
三是网络上要求集群里的节点之间网络互通。
只要满足这三个要求,无论是虚拟机、物理机还是云主机都是可以的。
对于集群节点规划,因为前期规划失误,导致后期各种返工,比较耗时。这是一个教训,我们再搭建集群之前一定要提交做好集群节点规划工作。
本文中的 etcd 集群、master 节点、node节点均使用下面这三台机器。
hostname | IP地址 | 节点说明 | 虚拟机 | 组件配置 |
master01 | 192.168.72.143 | 主节点(复用节点) | CentOS 7.2\CPU:2G\内存:2G\硬盘:20G | etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy、docker |
master02 | 192.168.72.144 | 主节点 | CentOS 7.2\CPU:2G\内存:2G\硬盘:20G | etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker |
master03 | 192.168.72.145 | 主节点 | CentOS 7.2\CPU:2G\内存:2G\硬盘:20G | etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker |
因为误删除操作,上面三台机器环境后来经过重新搭建,IP地址已发生变化,依次变更为: 192.168.0.143 master01 192.168.0.144 master02 192.168.0.145 master03 |
||||
集群虚IP | ||||
VIP | 192.168.0.140 |
【1】分别设置三台机器的永久主机名称,然后重新登录
# sudo hostnamectl set-hostname master01 # sudo hostnamectl set-hostname master02 # sudo hostnamectl set-hostname master03 |
【2】修改 /etc/hostname 文件,添加主机名和 IP 的对应关系
# vim /etc/hosts 192.168.72.143 master01 192.168.72.144 master02 192.168.72.145 master03 |
关闭网络管理服务
#systemctl stop NetworkManager.service
#systemctl disable NetworkManager.service
关闭防火墙
#systemctl disable firewalld
#systemctl stop firewalld
关闭SELinux
#vi etc/selinux/config
SELINUX=disabled
iptables策略配置
安装iptables.service #yum install -y iptables-services 添加策略: #vi /etc/sysconfig/iptables 新增以下端口: -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 2379 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 2380 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 10250 -j ACCEPT 注释掉这俩行: -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited 新增这两行: -A INPUT -j ACCEPT -A FORWARD -j REJECT 重启防火墙配置生效 systemctl restart iptables.service 设置防火墙开机启动 systemctl enable iptables.service |
Kubernetes 1.14.0
Docker 3.18.09(yum安装)
Etcd 3.3.12
Flanneld 0.7 vxlan网络
TLS认证通信(所有组件,如etcd、kubernetes master和node)
RBAC授权
kublet TSL BoostStrapping
kubedns、dashboard、heapster\EFK集群插件
私有docker镜像仓库harbor
由于启用了TLS双向认证、RBAC授权等严格的安全机制,建议从头开始部署,而不要从中间开始,否则可能会认证、授权等失败!部署过程中需要有很多证书的操作,一定耐心操作。
※【1】创建TLS证书和密钥
※【2】创建kubeconfig文件
※【3】创建高可用etcd集群
※【4】安装kubectl命令行工具
※【5】部署master节点
※【6】部署node节点
※【7】安装kubedns插件
※【8】安装dashboadr插件
※【9】安装healster插件
※【10】安装EFK插件
【1】由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部署,而不要从中间开始,否则可能会认证、授权等失败!
【2】部署过程中需要有很多证书的操作,请大家耐心操作
【3】该部署操作仅是搭建成了一个可用 kubernetes 集群,而很多地方还需要进行优化,heapster 插件、EFK 插件不一定会用于真实的生产环境中,但是通过部署这些插件,可以让大家了解到如何部署应用到集群上。
【4】自定义部署kubernetes时,如果想直接使用可执行程序命令,则需要配置环境变量:
export PATH=/opt/kubernetes/bin:$PATH
【5】所有组件均需要以下4个步骤:
(1)将kubernetes的二进制可执行文件复制到/opt/kubernetes/bin路径目录下
(2)创建systemd service启动服务文件,存放到/usr/lib/systemd/system路径目录下
(3)创建service中对应的配置参数文件,存放到/opt/kubernetes/config路径目录下
(4)生成的证书和秘钥,存放到/opt/kubernetes/ssl路径目录下
(5)将应用加入到开机启动项,并依次启动
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl start kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl start kube-scheduler.service
下载:wget https://github.com/kubernetes/kubernetes/releases/download/v1.14.3/kubernetes.tar.gz
从下面的地址下载kubernetes-server-linux-amd64.tar.gz
https://storage.googleapis.com/kubernetes-release/release/v1.14.3