本文参照http://blog.csdn.net/yang7551735/article/details/51172179,根据自己试验环境的操作,过程记录如下。
集群规划
etcd:192.168.212.101
master:192.168.212.101
nodes:192.168.212.102,192.168.212.103,192.168.212.104
组件安装
master
安装etcd,kubernetes-master,docker组件
# yum install etcd kubernetes-master docker -y
修改etcd的配置参数
# vi /etc/etcd/etcd.conf将以下几行进行修改,完成后保存退出。配置文件的内容被应用于/usr/lib/systemd/system/etcd.service文件,如果需要更多配置,同步更新/usr/lib/systemd/system/etcd.service
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.212.101:2379"
保存好后继续执行以下命令(设置自动启动服务,启动服务)
systemctl enable etcd
systemctl start etcd
修改kubernetes server的参数
# vi /etc/kubernetes/apiserver将以下几行进行修改,完成后保存退出。参数文件被/usr/lib/systemd/system/kube-apiserver.service引用。
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.212.101:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=192.168.0.0/16"
192.168.0.0/16为虚拟机集群地址,根据实际修改
设置/etc/kubernetes/controller-manager文件里的参数
参数文件会被/usr/lib/systemd/system/kube-controller-manager.service引用
KUBE_CONTROLLER_MANAGER_ARGS="--node-monitor-grace-period=10s --pod-eviction-timeout=10s"
设置 /etc/kubernetes/config 文件里的参数
参数文件会被scheduler、manager等引用
KUBE_MASTER="--master=http://192.168.212.101:8080"
到这里为止我们etcd和kubernetes的服务端设置就结束了,接着我们要启动kubernetes server服务执行下面的命令
启动kubernetes server
systemctl enable kube-apiserver kube-scheduler kube-controller-manager
systemctl start kube-apiserver kube-scheduler kube-controller-manager
验证服务已启动
systemctl list-units --type=service|grep kube-apiserver
应该输出:kube-apiserver.service loaded active running Kubernetes API Server
配置docker虚拟机网段
etcdctl set /coreos.com/network/config '{ "Network" : "10.1.0.0/16" }'
nodes
安装kubernetes-nodes以及docker还有flanneld组件
#yum install kubernetes-node flannel docker -y
配置docker服务
systemctl enable docker
systemctl start docker
配置flanneld服务
修改/usr/lib/systemd/system/flanneld.service,其中定义的变量由/etc/sysconfig/flanneld文件声明:
ExecStart=/usr/bin/flanneld-start -etcd-endpoints=${FLANNEL_ETCD} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS
修改/etc/sysconfig/flanneld文件配置如下:
FLANNEL_ETCD="http://192.168.212.101:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"
然后启动flanneld服务
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl restart docker
修改docker网络
因为docker需要使用flanneld的网络,因此需要修改docker的service文件:
修改/usr/lib/systemd/system/docker.service文件,在执行前增加配置文件 EnvironmentFile=-/etc/sysconfig/flanneld
EnvironmentFile=-/run/flannel/subnet.env
执行命令增加参数 --bip=${FLANNEL_SUBNET}
重启docker
systemctl daemon-reload
systemctl restart docker
网络配置检查
执行ip a检查当前的网络的准备情况
如果看到到flannel0与docker0的网段相同,则网络配置成功。
kubernetes node配置
修改/etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.212.101:8080"
修改/etc/kubernetes/kubelet文件
KUBELET_HOSTNAME="--hostname-override=192.168.211.102"
KUBELET_API_SERVER="--api-servers=http://192.168.212.101:8080"
启动kubernets node服务
systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy
验证服务已启动
systemctl list-units --type=service|grep kubelet
应该输出:kubelet.service loaded active running Kubernetes Kubelet Server
完成好上述设置后我们在kubernetes server节点也就是我们实验中的host 192.168.212.101中执行kubectl get nodes可以看到如下节点:
tips:所有node会把自身的信息注册在etcd数据库。在etcd服务器上,通过etcdctl ls /registry/minions可以查看所有已经注册的node,如: