『高級篇』docker之kubernetes基礎(chǔ)集群部署(下)(34)

原創(chuàng)文章绽诚,歡迎轉(zhuǎn)載杭煎。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會恩够,謝謝羡铲!
原文鏈接地址:『高級篇』docker之kubernetes基礎(chǔ)集群部署(下)(34)

這次繼續(xù)集群的部署simple版本(下)。源碼:https://github.com/limingios/msA-docker k8s分支和https://github.com/limingios/kubernetes-starter

部署Scheduler(主節(jié)點(diǎn))

簡介

kube-scheduler負(fù)責(zé)分配調(diào)度Pod到集群內(nèi)的節(jié)點(diǎn)上也切,它監(jiān)聽kube-apiserver,查詢還未分配Node的Pod雷恃,然后根據(jù)調(diào)度策略為這些Pod分配節(jié)點(diǎn)。我們前面講到的kubernetes的各種調(diào)度策略就是它實(shí)現(xiàn)的褂萧。

部署

通過系統(tǒng)服務(wù)方式部署

cp ~/kubernetes-starter/target/master-node/kube-scheduler.service /lib/systemd/system/
systemctl enable kube-scheduler.service
service kube-scheduler start
journalctl -f -u kube-scheduler

重點(diǎn)配置說明

vi /lib/systemd/system/kube-scheduler.service 

[Unit]
Description=Kubernetes Scheduler
...
[Service]
ExecStart=/home/michael/bin/kube-scheduler \
#對外服務(wù)的監(jiān)聽地址,這里表示只有本機(jī)的程序可以訪問它
--address=127.0.0.1 \
#apiserver的url
--master=http://127.0.0.1:8080 \
...

PS:最重要的三個核心組件就部署完了 ,

部署CalicoNode(所有節(jié)點(diǎn))

它是通過系統(tǒng)服務(wù)加docker的方式來完成的羡忘。

簡介

Calico實(shí)現(xiàn)了CNI接口,是kubernetes網(wǎng)絡(luò)方案的一種選擇卷雕,它一個純?nèi)龑拥臄?shù)據(jù)中心網(wǎng)絡(luò)方案(不需要Overlay),并且與OpenStack漫雕、Kubernetes、AWS浸间、GCE等IaaS和容器平臺都有良好的集成。
Calico在每一個計算節(jié)點(diǎn)利用Linux Kernel實(shí)現(xiàn)了一個高效的vRouter來負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā)魁蒜,而每個vRouter通過BGP協(xié)議負(fù)責(zé)把自己上運(yùn)行的workload的路由信息像整個Calico網(wǎng)絡(luò)內(nèi)傳播——小規(guī)模部署可以直接互聯(lián)吩翻,大規(guī)模下可通過指定的BGP route reflector來完成兜看。 這樣保證最終所有的workload之間的數(shù)據(jù)流量都是通過IP路由的方式完成互聯(lián)的狭瞎。

部署

calico是通過系統(tǒng)服務(wù)+docker方式完成的

cp ~/kubernetes-starter/target/all-node/kube-calico.service /lib/systemd/system/
systemctl enable kube-calico.service
service kube-calico start
journalctl -f -u kube-calico

查看配置

vi /lib/systemd/system/kube-calico.service

calico可用性驗(yàn)證

查看容器運(yùn)行情況

docker ps

查看節(jié)點(diǎn)運(yùn)行情況

calicoctl node status

查看端口BGP 協(xié)議是通過TCP 連接來建立鄰居的熊锭,因此可以用netstat 命令驗(yàn)證 BGP Peer

netstat -natp|grep ESTABLISHED|grep 179

查看集群ippool情況[主節(jié)點(diǎn)]

calicoctl get ipPool -o yaml

5.4 重點(diǎn)配置說明

[Unit]
Description=calico node
...
[Service]
#以docker方式運(yùn)行
ExecStart=/usr/bin/docker run --net=host --privileged --name=calico-node \
#指定etcd endpoints(這里主要負(fù)責(zé)網(wǎng)絡(luò)元數(shù)據(jù)一致性,確保Calico網(wǎng)絡(luò)狀態(tài)的準(zhǔn)確性)
-e ETCD_ENDPOINTS=http://192.168.66.101:2379 \
#網(wǎng)絡(luò)地址范圍(同上面ControllerManager)
-e CALICO_IPV4POOL_CIDR=172.20.0.0/16 \
#鏡像名球涛,為了加快大家的下載速度,鏡像都放到了阿里云上
registry.cn-hangzhou.aliyuncs.com/imooc/calico-node:v2.6.2

配置kubectl命令(主節(jié)點(diǎn))

簡介

kubectl是Kubernetes的命令行工具亿扁,是Kubernetes用戶和管理員必備的管理工具。
kubectl提供了大量的子命令从祝,方便管理Kubernetes集群中的各種功能。

初始化

使用kubectl的第一步是配置Kubernetes集群以及認(rèn)證方式牍陌,包括:

  • cluster信息:api-server地址
  • 用戶信息:用戶名、密碼或密鑰
  • Context:cluster员咽、用戶信息以及Namespace的組合

我們這沒有安全相關(guān)的東西毒涧,只需要設(shè)置好api-server和上下文就好啦:

#指定apiserver地址(ip替換為你自己的api-server地址)
kubectl config set-cluster kubernetes  --server=http://192.168.66.101:8080
#指定設(shè)置上下文,指定cluster
kubectl config set-context kubernetes --cluster=kubernetes
#選擇默認(rèn)的上下文
kubectl config use-context kubernetes

通過上面的設(shè)置最終目的是生成了一個配置文件:~/.kube/config贝室,當(dāng)然你也可以手寫或復(fù)制一個文件放在那仿吞,就不需要上面的命令了捡偏。

配置kubelet(工作節(jié)點(diǎn)102,103這2兩臺機(jī)器)

簡介

每個工作節(jié)點(diǎn)上都運(yùn)行一個kubelet服務(wù)進(jìn)程,默認(rèn)監(jiān)聽10250端口银伟,接收并執(zhí)行master發(fā)來的指令,管理Pod及Pod中的容器彤避。每個kubelet進(jìn)程會在API Server上注冊節(jié)點(diǎn)自身信息傅物,定期向master節(jié)點(diǎn)匯報節(jié)點(diǎn)的資源使用情況琉预,并通過cAdvisor監(jiān)控節(jié)點(diǎn)和容器的資源挟伙。

部署

通過系統(tǒng)服務(wù)方式部署,但步驟會多一些模孩,具體如下:

#確保相關(guān)目錄存在
mkdir -p /var/lib/kubelet
mkdir -p /etc/kubernetes
mkdir -p /etc/cni/net.d

#復(fù)制kubelet服務(wù)配置文件
cp ~/kubernetes-starter/target/worker-node/kubelet.service /lib/systemd/system/
#復(fù)制kubelet依賴的配置文件
cp ~/kubernetes-starter/target/worker-node/kubelet.kubeconfig /etc/kubernetes/
#復(fù)制kubelet用到的cni插件配置文件
cp ~/kubernetes-starter/target/worker-node/10-calico.conf /etc/cni/net.d/

systemctl enable kubelet.service
service kubelet start
journalctl -f -u kubelet

主節(jié)點(diǎn)查看node的信息

kubectl get nodes

重點(diǎn)配置說明

kubelet.service

[Unit]
Description=Kubernetes Kubelet
[Service]
#kubelet工作目錄尖阔,存儲當(dāng)前節(jié)點(diǎn)容器,pod等信息
WorkingDirectory=/var/lib/kubelet
ExecStart=/home/michael/bin/kubelet \
#對外服務(wù)的監(jiān)聽地址
--address=192.168.66.103 \
#指定基礎(chǔ)容器的鏡像介却,負(fù)責(zé)創(chuàng)建Pod 內(nèi)部共享的網(wǎng)絡(luò)、文件系統(tǒng)等齿坷,這個基礎(chǔ)容器非常重要:K8S每一個運(yùn)行的 POD里面必然包含這個基礎(chǔ)容器,如果它沒有運(yùn)行起來那么你的POD 肯定創(chuàng)建不了
--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/imooc/pause-amd64:3.0 \
#訪問集群方式的配置永淌,如api-server地址等
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig \
#聲明cni網(wǎng)絡(luò)插件
--network-plugin=cni \
#cni網(wǎng)絡(luò)配置目錄,kubelet會讀取該目錄下得網(wǎng)絡(luò)配置
--cni-conf-dir=/etc/cni/net.d \
#指定 kubedns 的 Service IP(可以先分配遂蛀,后續(xù)創(chuàng)建 kubedns 服務(wù)時指定該 IP),--cluster-domain 指定域名后綴李滴,這兩個參數(shù)同時指定后才會生效
--cluster-dns=10.68.0.2 \
...

kubelet.kubeconfig
kubelet依賴的一個配置,格式看也是我們后面經(jīng)常遇到的yaml格式蛮瞄,描述了kubelet訪問apiserver的方式

apiVersion: v1
clusters:
- cluster:
#跳過tls所坯,即是kubernetes的認(rèn)證
insecure-skip-tls-verify: true
#api-server地址
server: http://192.168.1.102:8080
...

calico.conf
calico作為kubernets的CNI插件的配置

{  
  "name": "calico-k8s-network",  
  "cniVersion": "0.1.0",  
  "type": "calico",  
    <!--etcd的url-->
    "ed_endpoints": "http://192.168.1.102:2379",  
    "logevel": "info",  
    "ipam": {  
        "type": "calico-ipam"  
   },  
    "kubernetes": {  
        <!--api-server的url-->
        "k8s_api_root": "http://192.168.1.102:8080"  
    }  
}  

PS:每次安裝都需要看日志的挂捅,老鐵不要認(rèn)為看日志麻煩芹助,看日志其實(shí)是為了避免后續(xù)的問題存在,走一步穩(wěn)一步状土!后續(xù)在出現(xiàn)問題了,就更麻煩声诸。下次老鐵我們一起在這個集群上面做下測試和練習(xí)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泻肯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子慰照,更是在濱河造成了極大的恐慌灶挟,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毒租,死亡現(xiàn)場離奇詭異,居然都是意外死亡墅垮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門抬伺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灾梦,“玉大人峡钓,你說我怎么就攤上這事若河。” “怎么了萧福?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長统锤。 經(jīng)常有香客問我,道長饲窿,這世上最難降的妖魔是什么焕蹄? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上银锻,老公的妹妹穿的比我還像新娘做鹰。我一直安慰自己击纬,他們只是感情好钾麸,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饭尝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钥平。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天知态,我揣著相機(jī)與錄音,去河邊找鬼负敏。 笑死,一個胖子當(dāng)著我的面吹牛原在,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播庶柿,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼秽浇,長吁一口氣:“原來是場噩夢啊……” “哼浮庐!你這毒婦竟也來了柬焕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤斑举,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后富玷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體既穆,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雀鹃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了黎茎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡踢代,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奸鬓,到底是詐尸還是另有隱情,我是刑警寧澤串远,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站澡罚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏留搔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一隔显、第九天 我趴在偏房一處隱蔽的房頂上張望饵逐。 院中可真熱鬧括眠,春花似錦倍权、人聲如沸掷豺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽默辨。三九已至,卻和暖如春缩幸,著一層夾襖步出監(jiān)牢的瞬間档叔,已是汗流浹背蒸绩。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工铃肯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留患亿,地道東北人押逼。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像挑格,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子漂彤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容