本文參照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,如: