CentOS 7 搭建Kubernetes 1.0

jopen 9年前發布 | 67K 次閱讀 CentOS

Kubernetes 日前終于發布了穩定版 1.0, 本文將要出一個系列的文章來講述如何搭建環境,部署服務,網絡分析,升級服務,備份數據,最后到達如何對Kubernetes進行二次發。

  1. CentOS7 搭建Kubernetes 1.0
  2. </ol> </blockquote>

    相信點擊進來的人都應該知道Kubernetes是什么吧,關于介紹,請看: http://www.infoq.com/cn/articles/Kubernetes-system-architecture-introduction?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global 講解的很清楚。

    本文直接切入正題。

    本文搭建的基本環境是 Kubernetes 1.0 + CentOS 7的兩臺虛擬機:一臺作為Master,一臺作為Minion。

    1. 簡要敘述

    搭建過程:

    1. 網絡搭建,將采用Flannel
    2. 安裝master和minion端需要的軟件
    3. 啟動Kubernetes集群
    4. </ol>

      2. 網絡搭建

      在裸機上安裝Kubernetes需要先備好一個網絡:我選擇的是簡單的Flannel,夠用就好。 Flannel網絡搭建較為簡單,部署一個etcd的集群,然后build flannel,運行即可。此不是文章重點。具體可參考: http://www.slideshare.net/lorispack/using-coreos-flannel-for-docker-networking 如果遇到了問題可以咨詢我,關于Flannel在docker網絡中的作用可以看這篇博客: http://my.oschina.net/xue777hua/blog/488345

      3. 安裝Kubernetes集群

      其中 centos-master = 192.168.56.110 centos-minion = 192.168.56.111 請設置好/etc/hosts文件,或者是DNS。 master運行如下組件:etcd, kube-apiserver, kube-controller-manager, kube-scheduler, kube-proxyminion運行如下組件:docker, kubelet, kube-proxy當然,前提是flannel網絡在兩邊都可以work, 當然更加的前提是安裝好了docker,檢驗的方式是:在master和minion都分別啟動一個er,在container之間互相能夠ping對方即可。

      3.1 為機器添加repo

      在 master+minion上, 使用virt7-testing的repo:

      [virt7-testing]
      name=virt7-testing
      baseurl=http://cbs.centos.org/repos/virt7-testing/x86_64/os/
      gpgcheck=0

      3.2 安裝Kubernetes軟件

      在所有的機器上執行yum -y install --enablerepo=virt7-testing kubernetes即可。檢查etcd的版本是否為0.4.6-7, 如果不是,則刪除etcd并且從rpm安裝:

      yum erase etcd
      yum install http://cbs.centos.org/kojifiles/packages/etcd/0.4.6/7.el7.centos/x86_64/etcd-0.4.6-7.el7.centos.x86_64.rpm
      yum -y install --enablerepo=virt7-testing kubernetes

      3.3 配置Kubernetes集群

      1.設置 master+minion的 /etc/kubernetes/config 為:

      KUBE_ETCD_SERVERS="--etcd_servers=http://centos-master:4001"
      KUBE_LOGTOSTDERR="--logtostderr=true"
      KUBE_LOG_LEVEL="--v=0"
      KUBE_ALLOW_PRIV="--allow_privileged=false"

      特別是 KUBE_ETCD_SERVERS 特別重要,表示要連接的etcd的服務,Kubernetes的各種信息:例如物理機,容器的基本信息都是存儲在Kubernetes上面的。

      2.設置 master+minion的 /etc/kubernetes/apiserver 為(只列出了重要的幾個配置):

      # 需要連接的master的地址,kubelet需要連接到kube-apiserver來工作
      KUBE_API_ADDRESS="--address=centos-master" 
      KUBE_API_PORT="--port=8080"

      服務所在的ip地址范圍,服務是一組pod的組合產物

      KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"</pre>
      3.設置 minion端的 /etc/kubernetes/kubelet 文件

      #  kubelet綁定的ip地址
      KUBELET_ADDRESS="--address=0.0.0.0"

      kubelet的通信段耨

      KUBELET_PORT="--port=10250"

      kubelet的hostname,到時候用kubectl get po 可以拿到的結果

      KUBELET_HOSTNAME="--hostname_override=centos-minion"

      api-server的通信端口

      KUBELET_API_SERVER="--api_servers=http://centos-master:8080"</pre>

      4.設置iptables8080, 10250的tcp端口都添加到防火墻列外,另外安裝flannel也要記得設置好iptables,具體見我的博客:http://my.oschina.net/xue777hua/blog/488345

      4. 啟動Kubernetes集群

      個人經驗是執行下面的命令之后使用systemctl status -l $SERVICES檢驗一遍,如果有問題執行systemctl restart $SERVICES。

      4.1 啟動master

      for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler kube-proxy; do 
          systemctl restart $SERVICES
          systemctl enable $SERVICES
          systemctl status $SERVICES 
      done

      4.2 啟動minion

      for SERVICES in kube-proxy kubelet docker; do 
          systemctl restart $SERVICES
          systemctl enable $SERVICES
          systemctl status $SERVICES 
      done

      啟動完畢后,master端執行kubectl get no,如果能看到下面的結果即為成功:
      [03:01 AM root@centos-master ~]$ kubectl get no
      NAME            LABELS                                 STATUS
      centos-minion   kubernetes.io/hostname=centos-minion   Ready

      [參考]

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!