CentOS 7 YUM 搭建Kubernetes 1.0

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

  1. CentOS7 YUM 搭建Kubernetes 1.0

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

本文直接切入正題。api

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

1. 簡要敘述#

搭建過程:tcp

  1. 網絡搭建,將採用Flannel
  2. 安裝master和minion端須要的軟件
  3. 啓動Kubernetes集羣

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/488345ide

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-proxy
minion運行以下組件:docker, kubelet, kube-proxy
固然,前提是flannel網絡在兩邊均可以work, 固然更加的前提是安裝好了docker,檢驗的方式是:在master和minion都分別啓動一個container,在container之間互相可以ping對方便可。ui

3.1 爲機器添加repo

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

[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安裝:spa

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 爲:.net

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"

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"

4.設置iptables 8080, 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

####[參考]####

相關文章
相關標籤/搜索