標籤:kuberntes
Kubernetes從1.3開始引入kubeadm來試圖簡化其複雜的安裝。但kubeadm至今仍不穩定,而且我個人覺得kubeadm反而麻煩,還不如直接用指令碼或者其他自動化工具來安裝來的利索。關於kubeadm配置master的ha,也有相應的替代方案,比如使用keepalived或者corosync等高可用叢集軟體。所以在這篇文檔中,我還是會使用傳統的方式來安裝kubernetes叢集
Kubernetes依賴於docker和etcd,docker的網路,在這裡直接使用flannel。在這篇文檔裡,不會對master的高可用做過多的闡述,我們先簡單的建立一個基本可用最小化叢集。我這裡使用的三台CentOS 7.2的伺服器,各伺服器角色介紹如下:
192.168.1.20 server-20 master節點、node節點、etcd節點192.168.1.21 server-21 node節點、etcd節192.168.1.22 server-22 node節點、etcd節點
需要說明的是,這裡需要大家自己設定好基本環境,比如關閉selinux,配置時間同步,清空現有的iptables策略,以及配置好epel源等。
1、安裝並啟動docker
docker的安裝比較簡單,直接使用yum安裝即可:
yum install -y dockersystemctl start dockersystemctl enable docker
2、安裝etcd
在所有節點上執行如下安裝操作:
yum -y install etcd# 建立etcd data 目錄mkdir -p /opt/etcd/datachown -R etcd:etcd /opt/etcd/# 修改設定檔,/etc/etcd/etcd.conf 需要修改如下參數:ETCD_NAME=server-20ETCD_DATA_DIR="/opt/etcd/data/server-20.etcd"ETCD_LISTEN_PEER_URLS="ETCD_LISTEN_CLIENT_URLS="ETCD_INITIAL_ADVERTISE_PEER_URLS="ETCD_INITIAL_CLUSTER="server-20=ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.20:2379"
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" style="float:left;" />
# 修改 etcd 開機檔案sed -i ‘s/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\"/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --listen-client-urls=\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --advertise-client-urls=\\\"${ETCD_ADVERTISE_CLIENT_URLS}\\\" --initial-cluster-token=\\\"${ETCD_INITIAL_CLUSTER_TOKEN}\\\" --initial-cluster=\\\"${ETCD_INITIAL_CLUSTER}\\\" --initial-cluster-state=\\\"${ETCD_INITIAL_CLUSTER_STATE}\\\"/g‘ /usr/lib/systemd/system/etcd.service
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
# 啟動 etcdsystemctl enable etcdsystemctl start etcdsystemctl status etcd# 查看叢集狀態etcdctl cluster-health
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
# 啟動 etcdsystemctl enable etcdsystemctl start etcdsystemctl status etcd# 查看叢集狀態etcdctl cluster-health
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
3、配置flannel
先在etcd中註冊flannel子網:
etcdctl set /coreos.com/network/config ‘{"network": "172.16.0.0/16"}‘
在所有節點安裝flannel:
yum install -y flannel
修改flannel設定檔/etc/sysconfig/flanneld如下:
FLANNEL_ETCD="http://192.168.1.20:2379,http://192.168.1.21:2379,http://192.168.1.22:2379"FLANNEL_ETCD_KEY="/coreos.com/network"
啟動flannel:
systemctl start flanneldsystemctl enable flanneld
需要說明的是,如果要讓docker使用flannel的網路,docker必須要後於flannel啟動,所以需要重新啟動docker:
systemctl restart docker
4、安裝kubernetes服務端
我這裡使用的是網上別人提供的私人的kubernetes的yum源,如下:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
vim /etc/yum.repos.d/kube.repo[kube]name=Mritd Repositorybaseurl=https://yum.mritd.me/centos/7/x86_64enabled=1gpgcheck=1gpgkey=https://mritd.b0.upaiyun.com/keys/rpm.public.key
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
先通過yumdownloader將所有kubernetes相關的包下載下來,然後再通過本地yum實現安裝:
yumdownloader kubernetes-master kubernetes-client kubernetes-nodeyum localinstall -y kubernetes-master kubernetes-client
修改kubernetes master上的設定檔如下:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
vim /etc/kubernetes/configKUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://10.5.10.116:8080"vim /etc/kubernetes/apiserverKUBE_API_ADDRESS="--address=0.0.0.0"KUBE_API_PORT="--port=8080 --secure-port=443"KUBE_MASTER="--master=http://10.5.10.116:8080"KUBELET_PORT="--kubelet-port=10250"KUBE_ETCD_SERVERS="--etcd-servers=http://10.5.10.116:2379,http://10.5.10.117:2379,http://10.5.10.131:2379"KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
啟動kubernetes master:
systemctl start kube-apiserver kube-controller-manager kube-schedulersystemctl enable kube-apiserver kube-controller-manager kube-scheduler
5、安裝kubernetes node端
yum install -y kubernetes-node
修改node的設定檔:
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
vim /etc/kubernetes/configKUBE_LOGTOSTDERR="--logtostderr=true"KUBE_LOG_LEVEL="--v=0"KUBE_ALLOW_PRIV="--allow-privileged=false"KUBE_MASTER="--master=http://10.5.10.116:8080"vim /etc/kubernetes/kubeletKUBELET_ADDRESS="--address=0.0.0.0"KUBELET_HOSTNAME="--hostname-override=server-116"KUBELET_API_SERVER="--api-servers=http://10.5.10.116:8080"KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=myhub.fdccloud.com/library/pod-infrastructure:latest"
650) this.width=650;" src="/img/fz.gif" alt="複製代碼" />
啟動node端:
systemctl start kubelet kube-proxysystemctl enable kubelet kube-proxy
最後通過在kubernetes master上通過kubectl查看各節點是否正常:
[[email protected] ~]# kubectl get nodesNAME STATUS AGEserver-20 Ready 1dserver-21 Ready 1dserver-22 Ready 1d
至此,完成kubernetes 1.5的基本安裝
本文出自 “我的天空” 部落格,請務必保留此出處http://sky66.blog.51cto.com/2439074/1933995
Kubernetes 1.5安裝