在CentOS7上安装kubernetes 2016-08-20 10:00

环境规划

Master节点:docker1(kubernetes,etcd,ntp)
Minion节点:docker2,docker3(kubernetes,flannel,ntp)

安装

创建yum源

[root@cheyo yum.repos.d]# cat /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
[root@cheyo yum.repos.d]#

安装软件包

Master节点:

yum install -y kubernetes ntp.x86_64 etcd

Minion节点:

yum install -y kubernetes ntp.x86_64 flannel

配置etcd(Master节点)

在Master节点上,修改etcd的配置文件/etc/etcd/etcd.conf

1
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

配置kubernetes(Master节点)

在Master节点上,修改kubernetes的配置文件/etc/kubernetes/config

1
KUBE_LOG_LEVEL="--v=2"

修改Master节点kubernetes apiserver的配置文件/etc/kubernetes/apiserver

1
2
3
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet_port=10250"

启动相关服务(Master节点)

启动Master节点的相关服务:ntpd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager,并将这些服务设为开机自动启动。

for SRV in ntpd etcd kube-apiserver kube-scheduler kube-controller-manager;
do
    systemctl start $SRV
    systemctl enable $SRV
    systemctl status $SRV
done

如果每一个服务都启动成功,那么systemctl status $SRV显示的信息则包含Active: active (running)

配置Flannel的子网(Master节点)

在Master节点修改etcd的配置,设定Minion中flannel所使用的子网范围为172.80.1.0~172.80.254.0(每一个Minion节点都有一个独立的flannel子网)。

etcdctl mk /atomic.io/network/config '{"Network":"172.80.0.0/16", "SubnetMin": "172.80.1.0", "SubnetMax": "172.80.254.0"}'

配置Flannel连接的etcd(Minion节点)

修改Minion节点上Flannel的配置/etc/sysconfig/flanneld,设定etcd的相关信息,其中192.168.1.21为Master的IP地址。

1
2
FLANNEL_ETCD="http://192.168.1.21:2379"
FLANNEL_ETCD_KEY="/atomic.io/network"

配置Minion节点连接Master节点的Kubernetes(Minion节点)

修改Minion节点Kubernetes的全局配置文件/etc/kubernetes/config

1
2
KUBE_LOG_LEVEL="--v=2"
KUBE_MASTER="--master=http://192.168.1.21:8080"

修改Minion节点上Kubernetes kubelet的配置/etc/kubernetes/kubelet

1
2
3
4
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_API_SERVER="--api_servers=http://192.168.1.21:8080"
KUBELET_HOSTNAME=""

启动相关服务(Minion节点)

在Minion节点上启动相关服务:ntpd、flanneld、docker、kube-proxy、kubelet,并将这些服务设为开机自启动。

for SRV in ntpd flanneld docker kube-proxy kubelet;
do
    systemctl start $SRV
    systemctl enable $SRV
    systemctl status $SRV
done

备注:如下配置此版本docker不识别,会造成docker服务无法正常启动:

vi /etc/docker/daemon.json
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

解决办法:删除"registry-mirrors"这一行配置。

检查安装结果(状态)

在Master节点查看Kubernetes的状态

[root@docker1 ~]# kubectl get nodes -o wide
NAME      STATUS    AGE
docker2   Ready     1m
docker3   Ready     1m
[root@docker1 ~]#

在Master节点查看flannel子网分配情况:

[root@docker1 ~]# etcdctl ls /atomic.io/network/subnets
/atomic.io/network/subnets/172.80.74.0-24
/atomic.io/network/subnets/172.80.65.0-24
[root@docker1 ~]#

在Minion节点通过ip a查看flannel和docker网桥的网络配置信息,确认是否与etcd中/atomic.io/network/subnets的信息一致。

参考文档

  1. 在CentOS7上部署Kubernetes集群
Tags: #Docker    Post on Docker