Kubernetes學(xué)習(xí)(三)

z1.2 Kubernetes基本架構(gòu)與常用術(shù)語

????Kubernetes(k8s)是自動化容器操作的開源平臺菇篡,這些操作包括部署绍在,調(diào)度和節(jié)點(diǎn)集群間擴(kuò)展。

Kubernetes主要核心組件:

? ? ? ? ectd:保存整個集群的狀態(tài)河泳;

? ? ? ? apiserver:提供資源操作的唯一入口躯概,認(rèn)證,授權(quán)纺腊,訪問控制畔咧,API注冊和發(fā)現(xiàn)等機(jī)制;

? ? ? ? controller manager:負(fù)責(zé)維護(hù)集群的狀態(tài)揖膜,比如故障檢測誓沸,自動擴(kuò)展,滾動更新等壹粟;

? ? ? ? scheduler:負(fù)責(zé)資源的調(diào)度拜隧,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上;

? ? ? ? kubelet:負(fù)責(zé)維護(hù)容器的生命周期趁仙,負(fù)責(zé)Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理洪添;

? ? ? ? Container runtime:負(fù)責(zé)鏡像管理以及Pod和容器的真正運(yùn)行(CRI);

? ? ? ? Kube-proxy:負(fù)責(zé)為Service提供cluster內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡雀费;

1.2.1 Cluster

? ? Cluster是計算干奢、存儲和網(wǎng)絡(luò)資源的集合,Kubernetes利用這些資源運(yùn)行各種基于容器的應(yīng)用盏袄。

????kubernetes Cluster由Mater和Node組成忿峻,節(jié)點(diǎn)上運(yùn)行著若干Kubernetes服務(wù)。

1.2.1 Master

????Kubernetes中的Master是一臺運(yùn)行Kubernetes的主機(jī)辕羽,可以是物理機(jī)也可以是虛擬機(jī)逛尚,它是Kubernetes集群中的控制節(jié)點(diǎn),它負(fù)責(zé)完成整個Kubernetes集群的創(chuàng)建逛漫、管理和控制黑低,在Kubernetes集群中必不可少。

我們默認(rèn)只能在Master上使用kubectl工具完成Kubernetes具體的操作命令,如果Master宕機(jī)或是離線克握,我們所有的控制命令都會失效蕾管。因此Master非常重要,在生產(chǎn)環(huán)境中菩暗,Master一般會配置高可用集群服務(wù)解決其單點(diǎn)故障問題掰曾。

Kubernetes 1.4 開始Master上的關(guān)鍵服務(wù)都是以Docker 容器實例的方式運(yùn)行的,包括etcd服務(wù)停团。具體服務(wù)和其功能如下:

\bullet Kubernetes API Server ( kube-apiserver)旷坦,為kubernetes客戶端提供HTTP Rest API接口的關(guān)鍵服務(wù),是kubernetes中對象資源增佑稠、刪秒梅、查、改等操作的唯一入口舌胶,同時也是kubernetes集群控制的入口捆蜀。

\bullet Kubernetes Controller Manager ( kube-controller-manager),為Kubernetes提供統(tǒng)一的自動化控制服務(wù)幔嫂。

\bullet Kubernetes Scheduler (kube-scheduler)辆它,為Kubernetes提供資源調(diào)度的服務(wù),統(tǒng)一分配資源對象履恩。

\bullet Etcd Server(etcd)锰茉,為Kubernetes保存所有對象的鍵值對數(shù)據(jù)信息。

?1.2.2 Node

????在Kubernetes集群中切心,除了Master之外其它運(yùn)行Kubernetes服務(wù)的主機(jī)稱之為Node飒筑,在早期Kubernetes中稱其為Minion。Node也可以是物理機(jī)或虛擬機(jī)昙衅。Node是Kubernetes集群中任務(wù)的負(fù)載節(jié)點(diǎn)扬霜,Master經(jīng)過特殊設(shè)置后也可以作為Node負(fù)載任務(wù)定鸟。Kubernetes一般是由多個Node組成的而涉,我們建議Node的數(shù)量是N+2的。

????Node節(jié)點(diǎn)通過kubelet服務(wù)向Master注冊联予,可以實現(xiàn)動態(tài)的在Kubernetes集群中添加和刪除負(fù)載節(jié)點(diǎn)啼县。已加入Kubernetes集群中的Node節(jié)點(diǎn)還會通過kubelet服務(wù)動態(tài)的向Master提交其自身的資源信息。

1.2.3 Pod

????在Kubenetes中所有的容器均在Pod中運(yùn)行沸久,一個Pod可以承載一個或者多個相關(guān)的容器季眷。同一個Pod中的容器會部署在同一個物理機(jī)器上并且能夠共享資源,Pod是Kubernetes的基本操作單元,把相關(guān)的一個或多個容器構(gòu)成一個Pod卷胯,通常Pod里的容器運(yùn)行相同的應(yīng)用子刮,在Kubernetes集群中,一個Pod中的容器可以和另一個Node上的Pod容器直接通訊。

1.2.4 Service

Kubernetes Service定義了外界訪問一組特定Pod的方式挺峡,Service有自己的I和端口號葵孤,Service為Pod提供了負(fù)載均衡。

1.2.5 Replication Controller

????Replication Controller確保任何時候Kubernetes集群中有指定數(shù)量的Pod副本(replicas)在運(yùn)行橱赠, 如果少于指定數(shù)量的Pod副本(replicas)尤仍,Replication Controller會啟動新的容器(Container),反之會殺死多余的以保證數(shù)量不變狭姨。Replication Controller使用預(yù)先定義的Pod模板創(chuàng)建pods宰啦,一旦創(chuàng)建成功,Pod模板和創(chuàng)建的Pod沒有任何關(guān)聯(lián)饼拍,可以修改Pod模板而不會對已創(chuàng)建Pod有任何影響赡模。也可以直接更新通過Replication Controller創(chuàng)建的pod。對于利用pod模板創(chuàng)建的pod师抄,Replication Controller根據(jù)標(biāo)簽選擇器(Label Selector)來關(guān)聯(lián)纺裁,通過修改Pod的Label可以刪除對應(yīng)的Pod。

Replication Controller的定義包含如下的部分:

Pod的副本數(shù)目(Replicas)

用于篩選Pod的標(biāo)簽選擇器(Label Selector)

用于創(chuàng)建Pod的標(biāo)準(zhǔn)配置模板(Template)

1.2.6 Label

????Label用來給Kubernetes中的對象分組司澎。Label通過設(shè)置鍵值對(key-value)方式在創(chuàng)建Kubernetes對象的時候附屬在對象之上欺缘。一個Kubernetes對象可以定義多個Labels(key=value),并且key和value均由用戶自己指定挤安,同一組Label(key=value)可以指定到多個Kubernetes對象谚殊,Label可以在創(chuàng)建Kubernetes對象時設(shè)置,也可以在對象創(chuàng)建后通過kubectl或kubernetes api添加或刪除蛤铜。其他Kubernetes對象可以通過標(biāo)簽選擇器(Label Selector)選擇作用對象嫩絮。你可以把標(biāo)簽選擇器(Lebel Selector)看作關(guān)系查詢語言(SQL)語句中的where條件限定詞。

????Lable實現(xiàn)的是將指定的資源對象通過不同的Lable進(jìn)行捆綁围肥,靈活的實現(xiàn)多維度的資源分配剿干、調(diào)度、配置和部署穆刻。


2. Kubernetes集群

2.1 Master

2.1.1 etcd

[root@dpan ~]# vim /usr/lib/systemd/system/etcd.service

[Unit] Description=Etcd Server After=network.target [Service] Type=simple WorkingDirectory=/var/lib/etcd/ EnvironmentFile=-/etc/etcd/etcd.conf # set GOMAXPROCS to number of processors ExecStart=/usr/bin/etcd Restart=on-failure [Install] WantedBy=multi-user.target

[root@dpan ~]# systemctl daemon-reload

[root@dpan ~]# systemctl? enable etcd.service

[root@dpan ~]# mkdir -p /var/lib/etcd/

[root@dpan ~]# systemctl start etcd.service

[root@dpan ~]# etcdctl cluster-health

member 8e9e05c52164694d is healthy: got healthy result from http://localhost:2379

cluster is healthy

2.1.2?apiserver?

vi /etc/kubernetes/apiserver

KUBE_API_ARGS="--storage-backend=etcd3 --etcd-servers=http://127.0.0.1:2379 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range=169.169.0.0/16 --servicce-node-port-range=1-65535 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,DefaultStorageClass,ResourceQuota --logtostderr=true --log-dir=/var/log/kubernetes --v=2

[root@dpan ~]# systemctl enable kube-apiserver.service

[root@dpan ~]# systemctl start kube-apiserver

2.1.3??controller-manager?

vi /etc/kubernetes/controller-manager?

KUBE_CONTROLLER_MANAGER_ARGS="--master=http://192.168.0.23:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"

[root@dpan ~]# systemctl enable kube-controller-manager.service

[root@dpan ~]# systemctl start kube-controller-manager.service

2.1.4? scheduler

vi /etc/kubernetes/scheduler

KUBE_SCHEDULER_ARGS="--master=http://192.168.0.23:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2" ~ KUBE_SCHEDULER_ARGS="--master=http://192.168.0.23:8080 --logtostderr=true --log-dir=/var/log/kubernetes --v=2" ~

[root@dpan ~]# systemctl enable kube-scheduler.service [root@dpan ~]# systemctl start kube-scheduler.service

2.2 Node

2.2.1?kubelet

vi /usr/lib/systemd/system/kubelet.service

[Unit] Description=Kubernetes Kubelet Server Documentation=https://github.com/GoogleCloudPlatform/kubernetes After=docker.service Requires=docker.service [Service] WorkingDirectory=/var/lib/kubelet EnvironmentFile=-/etc/kubernetes/kubelet ExecStart=/usr/bin/kubelet $KUBELET_ARGS Restart=on-failure KillMode=process [Install] WantedBy=multi-user.target

mkdir /var/lib/kubelet

mkdir /etc/kubernetes

vi /etc/kubernetes/kubelet

KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubeconfig --hostname-override=192.168.0.24 --logtostderr=false --log-dir=/var/log/kubernetes --v=2 "

[root@epan ~]# vi /etc/kubernetes/kubeconfig?

[root@epan ~]# systemctl enable kubelet

[root@epan ~]# systemctl start kubelet

2.2.2??proxy?

vi /usr/lib/systemd/system/kube-proxy.service

[Unit] Description=Kubernetes Kube-Proxy Server Documentation=https://github.com/GoogleCloudPlatform/kubernetes After=network.service Requires=network.service [Service] EnvironmentFile=-/etc/kubernetes/proxy ExecStart=/usr/bin/kube-proxy $KUBE_PROXY_ARGS Restart=on-failure LimitNOFILE=65536 KillMode=process [Install] WantedBy=multi-user.target ~

[root@epan ~]# vi /etc/kubernetes/proxy

KUBE_PROXY_ARGS="--master=http://192.168.0.23:8080 --hostname-override=192.168.0.24 --logtostderr=true --log-dir=/var/log/kubernetes --v=2"

[root@epan ~]# systemctl enable kube-proxy

[root@epan ~]# systemctl start kube-proxy

2.2.3 Node啟動

[root@epan ~]# systemctl daemon-reload

[root@epan ~]# systemctl enable kubelet

[root@epan ~]# systemctl start kubelet

[root@epan ~]# systemctl status kubelet

[root@epan ~]# systemctl enable kube-proxy

[root@epan ~]# systemctl start kube-proxy

[root@epan ~]# systemctl status kube-proxy

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末置尔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子氢伟,更是在濱河造成了極大的恐慌榜轿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朵锣,死亡現(xiàn)場離奇詭異谬盐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诚些,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門飞傀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事砸烦∠唬” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵外冀,是天一觀的道長寡键。 經(jīng)常有香客問我,道長雪隧,這世上最難降的妖魔是什么西轩? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮脑沿,結(jié)果婚禮上藕畔,老公的妹妹穿的比我還像新娘。我一直安慰自己庄拇,他們只是感情好注服,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著措近,像睡著了一般溶弟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞭郑,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天辜御,我揣著相機(jī)與錄音,去河邊找鬼屈张。 笑死擒权,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阁谆。 我是一名探鬼主播碳抄,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼场绿!你這毒婦竟也來了剖效?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤裳凸,失蹤者是張志新(化名)和其女友劉穎贱鄙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姨谷,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年映九,在試婚紗的時候發(fā)現(xiàn)自己被綠了梦湘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捌议,靈堂內(nèi)的尸體忽然破棺而出哼拔,到底是詐尸還是另有隱情,我是刑警寧澤瓣颅,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布倦逐,位于F島的核電站,受9級特大地震影響宫补,放射性物質(zhì)發(fā)生泄漏檬姥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一粉怕、第九天 我趴在偏房一處隱蔽的房頂上張望健民。 院中可真熱鬧,春花似錦贫贝、人聲如沸秉犹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崇堵。三九已至,卻和暖如春客燕,著一層夾襖步出監(jiān)牢的瞬間筑辨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工幸逆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留棍辕,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓还绘,卻偏偏與公主長得像楚昭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拍顷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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