Docker學(xué)習(xí)筆記之k8s部署方法
本文記錄了如何在ubuntu 14.04裸機(jī)上部署k8s集群,參考自官方文檔。
拓?fù)浣Y(jié)構(gòu)
- 1master + 2minion
- k8s-master 192.168.0.201 master
- k8s-node1 192.168.0.202 minion
- k8s-node2 192.168.0.203 minion
準(zhǔn)備工作系統(tǒng)
安裝Ubuntu 14.04 LTS 64bit server版本系統(tǒng),配置好hostname和ip。
在更新國(guó)內(nèi)的軟件源的時(shí)候,由于GFW的原因,經(jīng)常會(huì)出現(xiàn)md5校驗(yàn)錯(cuò)誤,建議使用阿里云的源。
Docker
在minion節(jié)點(diǎn)上安裝Docker,版本需要在1.2+,此處安裝的是1.7.1。安裝方法參見Docker安裝(Ubuntu 64bit) 。
安裝好Docker之后,我們最好還配置一個(gè)國(guó)內(nèi)的registry mirror,加快鏡像拉取速度,參考配置國(guó)內(nèi)免費(fèi)registry mirror。
Google pause
給每個(gè)minion下載Google pause鏡像。之后的工作會(huì)用到gcr.io/google_containers/pause鏡像,國(guó)內(nèi)用戶由于GFW問題總是會(huì)出錯(cuò),所以我們先從docker.io下載pause鏡像,并設(shè)置tag。
# docker pull docker.io/kubernetes/pause # docker tag kubernetes/pause gcr.io/google_containers/pause:0.8.0 # docker tag gcr.io/google_containers/pause:0.8.0 gcr.io/google_containers/pause
SSH
需要所有minion節(jié)點(diǎn)都能從master節(jié)點(diǎn)直接登錄,不用密碼。
在master節(jié)點(diǎn)上進(jìn)行如下操作:
$ ssh-keygen $ ssh-copy-id user@192.168.0.201 $ ssh-copy-id user@192.168.0.202 $ ssh-copy-id user@192.168.0.203
部署集群
下載
下載部署腳本及二進(jìn)制文件。
首先從K8S的github倉庫中下載部署腳本。
$ git clone https://github.com/kubernetes/kubernetes.git
修改各組件的版本,下載所有組件的二進(jìn)制文件。此處我們使用etcd 2.2.0,flannel 0.5.0,k8s 1.0.6。
$ cd kubernetes/cluster/ubuntu $ vim build.sh #修改版本號(hào) # version setting FLANNEL_VERSION="0.5.0" ETCD_VERSION="2.2.0" KUBE_VERSION="1.0.6" $ ./build.sh
有時(shí)候使用非root賬戶下載會(huì)出現(xiàn)錯(cuò)誤,此時(shí)我們可以切換到root權(quán)限下下載,完成之后再使用chown命令將文件權(quán)限設(shè)置為原來的賬戶。
目錄binaries中出現(xiàn)如下結(jié)構(gòu)則表示成功。
配置
打開cluster/ubuntu/config-default.sh文件,修改如下字段:
export nodes=${nodes:-"wangtao@192.168.0.201 wangtao@192.168.0.202 wangtao@192.168.0.203"} export role=${role:-"a i i"} export NUM_MINIONS=${NUM_MINIONS:-2} export SERVICE_CLUSTER_IP_RANGE=${SERVICE_CLUSTER_IP_RANGE:-10.0.1.0/24} export FLANNEL_NET=${FLANNEL_NET:-172.16.0.0/16}
如果需要master節(jié)點(diǎn)也作為minion節(jié)點(diǎn)的話,只需將role中的a改為ai即可,NUM_MINIONS表示minion節(jié)點(diǎn)的個(gè)數(shù)。
service_cluster_ip_range表示集群中service所對(duì)應(yīng)的IP范圍。
flannel_net表示pod所分配的IP范圍。
部署
進(jìn)到cluster/目錄下進(jìn)行如下操作,
$ export KUBERNETES_PROVIDER=ubuntu $ ./kube-up.sh
接下來腳本就會(huì)將二進(jìn)制文件拷貝到相應(yīng)的節(jié)點(diǎn)上,不過在運(yùn)行服務(wù)的時(shí)候需要root權(quán)限,所以需要我們?yōu)槊恳粋€(gè)節(jié)點(diǎn)輸入一次密碼。
測(cè)試
我們可以使用kubectl工具進(jìn)行測(cè)試是否安裝成功。
首先我們把kubectl的路徑加入到PATH中,然后我們就可以直接使用該命令了。
我們啟動(dòng)一個(gè)Redis服務(wù)試一試。
進(jìn)入examples/guestbook目錄,修改redis-master-controller.yaml文件如下:
apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-master spec: replicas: 2 selector: name: redis-master template: metadata: labels: name: redis-master spec: containers: - name: master image: redis ports: - containerPort: 6379
然后運(yùn)行如下命令啟動(dòng)Redis。
$ kubectl create -f redis-master-controller.yaml
然后使用kubectl get rc
和 kubectl get pods
查看是否成功。
如果每個(gè)pod的狀態(tài)都為Running則部署成功。
這里可能會(huì)遇到pod狀態(tài)一直處于Penning的問題,此時(shí)可以通過kubectl describe pods/pod-name
來查看pod信息,如果沒有出錯(cuò)信息,那么Minion一直處于下載鏡像中,下載好之后pod即會(huì)成功啟動(dòng)。
動(dòng)態(tài)管理Cluster
如果集群已經(jīng)部署好,我們希望能夠動(dòng)態(tài)地添加和刪除Minion節(jié)點(diǎn)。
一種方法是,使用kube-down.sh將所有節(jié)點(diǎn)停掉之后,修改config-default.sh文件,將新添加的節(jié)點(diǎn)信息加入進(jìn)去,或者刪掉不用的節(jié)點(diǎn)信息,然后再使用kube-up.sh腳本重新啟動(dòng)。
當(dāng)然我們希望能夠在不關(guān)掉已有節(jié)點(diǎn)的情況下動(dòng)態(tài)添加新的Minion節(jié)點(diǎn),但是目前我還沒找到方法。等以后研究出來了再更新。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker刪除某個(gè)鏡像的實(shí)現(xiàn)方法
在使用 Docker 時(shí),經(jīng)常需要?jiǎng)h除不再需要的鏡像、容器和卷,以釋放存儲(chǔ)空間,本文主要介紹了Docker刪除某個(gè)鏡像的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02docker安裝fastdfs鏡像的一些注意事項(xiàng)
在安裝docker fastdfs鏡像時(shí)大家需要注意如果是云服務(wù)器則需要在云服務(wù)器后臺(tái)的安全組入口方向放開22122、23000以及8888端口,并且在云服務(wù)器防火墻配置放開以上三個(gè)端口,具體內(nèi)容詳情大家跟隨小編一起看看吧2021-05-05如何使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù)
這篇文章主要介紹了使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù),下面小編給大家講解下操作方法,對(duì)Docker恢復(fù)Mysql數(shù)據(jù)備份相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2022-11-11