一、Kubernetes是什么?
2014年,Google開源一個(gè)PAAS平臺,命名為Kubernetes。
其目標(biāo)是管理大規(guī)模服務(wù)(容器)集群,解決人們對大規(guī)模容器的部署、升級、回滾帶來的復(fù)雜性問題,實(shí)現(xiàn)在不停服務(wù)情況下的應(yīng)用管理,以便最大可能地把精力集中在業(yè)務(wù)開發(fā)上。
Kubernetes以聲明式方式進(jìn)行容器部署,也就是只要告訴Kubernetes要做什么,不需要告之如何去做。
二、應(yīng)用是如何部署和運(yùn)行的?
我們在使用容器技術(shù)時(shí),應(yīng)用便打包在容器中,以容器為粒度進(jìn)行操作,運(yùn)行時(shí)體現(xiàn)為一個(gè)進(jìn)程。
Kubernetes認(rèn)為一個(gè)微服務(wù)可能由多個(gè)容器(進(jìn)程)共同提供,便將多個(gè)容器看作一個(gè)組,看似豆莢,稱為 Pod ,也被稱為服務(wù)實(shí)例。Pod是Kubernetes最小調(diào)度單位。
一個(gè)應(yīng)用運(yùn)行時(shí),可能需要N個(gè)服務(wù)實(shí)例(Pod)。如果某個(gè)服務(wù)實(shí)例出現(xiàn)異常或宕機(jī),需要維持N個(gè)服務(wù)實(shí)例。這些工作由 ReplicaSet(副本集) 來做,也就是ReplicaSet能夠保證始終有N個(gè)Pod在運(yùn)行。(注:除 ReplicaSet --無狀態(tài)外,還有DaemonSet、StatefulSet和Job等)
如果應(yīng)用需要發(fā)布新版本,則需要“創(chuàng)建新版本的Pod,并替換舊版本的Pod”。這個(gè)工作由Deployment來做。Deployment會用新版本規(guī)范創(chuàng)建新ReplicaSet,新ReplicaSet創(chuàng)建新Pod數(shù)量會逐漸提高,舊ReplicaSet對應(yīng)的Pod數(shù)量同步逐漸減少。也就是Deployment--ReplicaSet--Pod。
我們可以通過YAML文件來進(jìn)行應(yīng)用的部署,例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: rss-site
labels:
app: web
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
- name: rss-reader
image: nickchase/rss-php-nginx:v1
ports:
- containerPort: 88
表達(dá)的意思為:部署 rss-site Web應(yīng)用,有2個(gè)副本,符合spec規(guī)范定義。這里涉及到selector的概念,表示的是對象通過Label進(jìn)行關(guān)聯(lián),類似SQL中的select語句。
三、如何訪問微服務(wù)?
Pod在應(yīng)用的運(yùn)行過程中,可能會進(jìn)行彈性伸縮。
相應(yīng)地,Pod對應(yīng)的IP地址也可能會發(fā)生變化。不能因Pod的IP地址變化,而影響服務(wù)的訪問。于是,引入Service概念,為一組相同功能的Pod提供統(tǒng)一的入口。
四層Service體現(xiàn)為IP地址和端口號。7層Service又引入了一個(gè)新的概念: Ingress ,可根據(jù)不同的URL請求轉(zhuǎn)發(fā)到后端不同的Service。
那么如何訪問Service呢?
對于集群內(nèi)部的服務(wù)來說,有兩種方法。一種方法是在服務(wù)(客戶端)啟動時(shí),將服務(wù)(服務(wù)端)的信息以環(huán)境變量的形式注入到(客戶端)中。另一種方法是使用虛擬DNS,服務(wù)(客戶端)只要知道服務(wù)的名稱即可,不需要關(guān)注服務(wù)的IP地址。
對于集群外部來說,也有兩種方法。一種是通過物理服務(wù)器的IP地址和端口號,也就是NodeIP + Port的形式。另一種是在公有云場景下,通過公有云的負(fù)載均衡來實(shí)現(xiàn)。
-
管理
+關(guān)注
關(guān)注
2文章
381瀏覽量
26331 -
容器
+關(guān)注
關(guān)注
0文章
490瀏覽量
21986 -
kubernetes
+關(guān)注
關(guān)注
0文章
222瀏覽量
8657
發(fā)布評論請先 登錄
相關(guān)推薦
評論