部署环境说明:
1、CENTOS 7.4
2、Docker version 17.05.0
3、etcd Version: 3.3.8
4、flannel-v0.10.0
node节点上运行:
Kubelet
kube-proxy
Docker
flannel
MASTER节点上运行:
Etcd
flannel
kube-apiserver
kube-controller-manager
kube-scheduler
IP Address | Role | CPU | Memory |
192.168.1.10 | K8s-Master1 | 2C | 2G |
192.168.1.20 | K8s-node1 | 2C | 2G |
192.168.1.30 | K8s-node2 | 2C | 2G |
修改各主机的hosts文件:
1、安装操作系统,选择最小化安装,安装完成后yum相关包如下:
yum -y install wget ntpdate bind-utils iptables-services
关闭firewall
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动
# systemctl start iptables.service #重启防火墙
# systemctl enable iptables.service #设置防火墙开机启动
#iptables -A INPUT -p tcp --dport 4001 -m state --state new -j ACCEPT
#iptables -A INPUT -p tcp --dport 2379 -m state --state new -j ACCEPT
#iptables -A INPUT -p tcp --dport 2380 -m state --state new -j ACCEPT
关闭selinux
#setenforce 0
[root@localhost ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
2、安装etcd
git地址:https://github.com/coreos/etcd/releases/
etcd中文文档:http://etcd.doczh.cn/documentation/
下载安装包:https://github.com/coreos/etcd/releases/download/v3.3.8/etcd-v3.3.8-linux-amd64.tar.gz
#tar -zxvf etcd-v3.3.8-linux-amd64.tar.gz
#ln -s etcd-v3.3.8-linux-amd64 etcd
#cd etcd
#cp etcd* /bin/
#etcd --version #确认是否可以使用
#mkdir /etc/etcd # 创建etcd配置文件目录
编辑etcd配置文件:vim /etc/etcd/etcd.conf修改下面的内容,nodes节点上按照IP地址进行相应修改,
Node2节点,相应的修改node3节点
检查集群健康状态:etcdctl –endpoints cluster-health
检查etcd集群的节点情况以及查看那台是leader节点
Etcdctl –endpoints member list
3、安装kubernetes yum install kubernetes (master、nodes都需要安装)
安装完成后可以修改配置文件:
配置文件在/etc/kubernetes目录下,MASTER上需要修改apiserver config两个配置文件,如果多个集群还需要修改controller-manager:
Config配置中可以定义日志以及是否有特权访问主机上的硬件 --allow-privileged 主要设置KUBE_MASTER 以及KUBE_ETCD_SERVERS
KUBE_LOGTOSTDERR定义将错误日志记录到stderr或者在文件中记录
KUBE_LOG_LEVEL定义日志级别
KUBE_ALLOW_PRIV是否允许运行特权容器。
apiserver配置文件如下,其中KUBE_API_ARGS项,可配置安全证书,没有可忽略
apiserver中配置KUBE_API_ADDRESS、KUBE_API_PORT、KUBE_SERVICE_ADDRESSES
在node节点上主要配置kubelet配置文件 KUBELET_ADDRESS、KUBELET_PORT、KU证忽略书BELET_HOSTNAME、KUBELET_API_SERVER
5、安装、配置flannel 下载地址
下载解压后主要有flanneld、mk-docker-opts.sh这两个文件,其中flanneld为主要的执行文件,sh脚本用于生成Docker启动参数。
需要将flanneld拷贝到/usr/bin 目录下,启动时调用。
所有服务器上配置vim /usr/lib/systemd/system/flanneld.service
所有服务器编辑配置文件/etc/sysconfig/flanneld,并且设置etcd的地址。
在etcd中添加一条网络配置记录,这个配置将用于flanneld分配给每个docker的虚拟IP地址段,根据需要修改DOCKER的网络地址段。
etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
注意:flanneld将覆盖docker0网桥,如果docker服务已经启动,需要停止docker服务。
启动flanneld服务
systemctl restart flannel
设置docker0网桥的ip地址
source /run/flannel/subnet.env
ifconfig docker0 ${FLANNEL_SUBNET}
完成后确认网络接口docker0的IP地址属于flannel0的子网
[root@kubernets-node2 ~]# ip a
6、启动kubernetes\etcd\flannel\docker
master节点上启动 etcd(也可以单独部署) flannel systemctl start kube-apiserver 、kube-controller-manager、kube-scheduler
也可以写成脚本来启动:
for master in etcd flanneld kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $master; done
node节点上启动 systemctl start flannel kube-proxt 、 systemctl start kubelet、 systemctl start docker
for node in etcd flanneld kube-proxy kubelet docker;do systemctl restart $node;done
7、验证kubernetes集群是否正常
kubectl get nodes 获取所有节点信息
[root@localhost kubernetes]# kubectl cluster-info
kubectl describe node d8s-node1 获取详细的节点信息,包括该节点的系统配置、CPU、内存、可以创建的pods数量
kubectl get namespace