部署环境说明:

        1CENTOS 7.4

        2Docker version 17.05.0

        3etcd Version: 3.3.8

        4flannel-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文件: 

image.png

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地址进行相应修改,

image.png

Node2节点,相应的修改node3节点

image.png检查集群健康状态:etcdctl –endpoints cluster-health

image.png检查etcd集群的节点情况以及查看那台是leader节点

Etcdctl –endpoints member list

image.png3、安装kubernetes    yum install kubernetes     masternodes都需要安装)

        安装完成后可以修改配置文件:

        配置文件在/etc/kubernetes目录下,MASTER上需要修改apiserver  config两个配置文件,如果多个集群还需要修改controller-manager:

        Config配置中可以定义日志以及是否有特权访问主机上的硬件 --allow-privileged 主要设置KUBE_MASTER 以及KUBE_ETCD_SERVERS

KUBE_LOGTOSTDERR定义将错误日志记录到stderr或者在文件中记录

KUBE_LOG_LEVEL定义日志级别

KUBE_ALLOW_PRIV是否允许运行特权容器。

image.png

apiserver配置文件如下,其中KUBE_API_ARGS项,可配置安全证书,没有可忽略

image.pngapiserver中配置KUBE_API_ADDRESSKUBE_API_PORTKUBE_SERVICE_ADDRESSES

node节点上主要配置kubelet配置文件 KUBELET_ADDRESSKUBELET_PORTKU证忽略书BELET_HOSTNAMEKUBELET_API_SERVER

image.png5、安装、配置flannel  下载地址

下载解压后主要有flanneldmk-docker-opts.sh这两个文件,其中flanneld为主要的执行文件,sh脚本用于生成Docker启动参数。

需要将flanneld拷贝到/usr/bin 目录下,启动时调用。

所有服务器上配置vim /usr/lib/systemd/system/flanneld.service

image.png所有服务器编辑配置文件/etc/sysconfig/flanneld,并且设置etcd的地址。

image.pngetcd中添加一条网络配置记录,这个配置将用于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}

完成后确认网络接口docker0IP地址属于flannel0的子网

[root@kubernets-node2 ~]# ip a

image.png6、启动kubernetes\etcd\flannel\docker

        master节点上启动 etcd(也可以单独部署) flannel  systemctl start kube-apiserver kube-controller-managerkube-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  获取所有节点信息

image.png        spacer.gif

        [root@localhost kubernetes]# kubectl cluster-info 

kubectl describe node d8s-node1  获取详细的节点信息,包括该节点的系统配置、CPU、内存、可以创建的pods数量

image.png    kubectl get namespace

image.png

        spacer.gif