kubernetes集群搭建實操

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容