2、基於kubernetes構建Docker集羣環境實戰

kubernetes是google公司基於docker所作的一個分佈式集羣,有如下主件組成
   etcd: 高可用存儲共享配置和服務發現,做爲與minion機器上的flannel配套使用,做用是使每臺 minion上運行的docker擁有不一樣的ip段,最終目的是使不一樣minion上正在運行的docker containner都有一個與別的任意一個containner(別的minion上運行的docker containner)不同的IP地址。
   flannel: 網絡結構支持
   kube-apiserver: 不論經過kubectl仍是使用remote api 直接控制,都要通過apiserver
  kube-controller-manager: 對replication controller, endpoints controller, namespace controller, and serviceaccounts controller的循環控制,與kube-apiserver交互,保證這些controller工做
   kube-scheduler: Kubernetes scheduler的做用就是根據特定的調度算法將pod調度到指定的工做節點(minion)上,這一過程也叫綁定(bind)
   kubelet: Kubelet運行在Kubernetes Minion Node上. 它是container agent的邏輯繼任者
   kube-proxy: kube-proxy是kubernetes 裏運行在minion節點上的一個組件, 它起的做用是一個服務代理的角色
 
圖爲GIT+Jenkins+Kubernetes+Docker+Etcd+confd+Nginx+Glusterfs架構
以下:

 

環境:
centos7系統機器三臺:
    10.0.0.81: 用來安裝kubernetes master
    10.0.0.82: 用做kubernetes minion (minion1)
    10.0.0.83: 用做kubbernetes minion (minion2)
 
1、關閉系統運行的防火牆及selinux
1。若是系統開啓了防火牆則按以下步驟關閉防火牆(全部機器)
# systemctl stop firewalld # systemctl disable firewalld
2.關閉selinux
#setenforce 0
#sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux 

  

 
2、MASTER安裝配置
1. 安裝並配置Kubernetes master(yum 方式)
# yum -y install etcd kubernetes

    

 配置etcd。確保列出的這些項都配置正確而且沒有被註釋掉,下面的配置都是如此 node

#vim /etc/etcd/etcd.conf
 
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://localhost:2379"

  配置kuberneteslinux

vim /etc/kubernetes/apiserver
 
KUBE_API_ADDRESS="--address=0.0.0.0" KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet_port=10250"
KUBE_ETCD_SERVERS="--etcd_servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""

   

2. 啓動etcd, kube-apiserver, kube-controller-manager and kube-scheduler服務
# for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done

3.設置etcd網絡算法

#etcdctl -C 10.0.0.81:2379 set /atomic.io/network/config '{"Network":"10.1.0.0/16"}' 
4. 至此master配置完成,運行kubectl get nodes能夠查看有多少minion在運行,以及其狀態。這裏咱們的minion還都沒有開始安裝配置,因此運行以後結果爲空
# kubectl get nodes NAME LABELS STATUS

   

3、MINION安裝配置(每臺minion機器都按以下安裝配置)
 
1. 環境安裝和配置
# yum -y install flannel kubernetes

  配置kubernetes鏈接的服務端IPdocker

#vim /etc/kubernetes/config
KUBE_MASTER="--master=http://10.0.0.81:8080"
KUBE_ETCD_SERVERS="--etcd_servers=http://10.0.0.81:2379"

  配置kubernetes  ,(請使用每臺minion本身的IP地址好比10.0.0.81:代替下面的$LOCALIP)vim

 
#vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_PORT="--port=10250" # change the hostname to this host’s IP address KUBELET_HOSTNAME="--hostname_override=$LOCALIP" KUBELET_API_SERVER="--api_servers=http://10.0.0.81:8080" KUBELET_ARGS=""

  

2. 準備啓動服務(若是原本機器上已經運行過docker的請看過來,沒有運行過的請忽略此步驟)
    運行ifconfig,查看機器的網絡配置狀況(有docker0)
# ifconfig docker0
Link encap:Ethernet HWaddr 02:42:B2:75:2E:67 inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP 
BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0
errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

  warning:在運行過docker的機器上能夠看到有docker0,這裏在啓動服務以前須要刪掉docker0配置,在命令行運行:sudo ip link delete docker0centos

3.配置flannel網絡api

#vim /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://10.0.0.81:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"  
PS:其中atomic.io與上面etcd中的Network對應
 
4. 啓動服務
# for SERVICES in flanneld kube-proxy kubelet docker; do systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done

 

4、配置完成驗證安裝
    肯定兩臺minion(10.0.0.82和10.0.0.83)和一臺master(10.0.0.81)都已經成功的安裝配置而且服務都已經啓動了。
    切換到master機器上,運行命令kubectl get nodes 
# kubectl get nodes
NAME STATUS AGE
10.0.0.82 Ready 1m
10.0.0.83 Ready 1m

  能夠看到配置的兩臺minion已經在master的node列表中了。若是想要更多的node,只須要按照minion的配置,配置更多的機器就能夠了。bash

相關文章
相關標籤/搜索