Pagids答案有大部分的基礎知識。您應該爲您的場景創建4 Deployments
。每個部署將創建一個ReplicaSet
,該表計劃和監督Deployment
的PODs
的集合。
每個Deployment
很可能還需要在它前面的Service
進行訪問。我通常會創建一個yaml文件,其中包含Deployment
和相應的Service
。下面是一個nginx.yaml
,我使用的一個示例:
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
name: nginx
targetPort: 80
nodePort: 32756
selector:
app: nginx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginxdeployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginxcontainer
image: nginx:latest
imagePullPolicy: Always
ports:
- containerPort: 80
這裏一些附加信息的澄清:
- 甲
POD
不是可伸縮的單元。一個Deployment
,安排POD是。
- A
Deployment
意在代表一起實現單一目的的單組POD。
- 您可以有許多
Deployments
在羣集的虛擬網絡中一起工作。
- 要訪問可能由多個
PODs
運行在不同節點上的Deployment
,您必須創建一個服務。
- 部署旨在包含無狀態服務。如果需要存儲狀態,則需要創建
StatefulSet
(例如,用於數據庫服務)。
謝謝Oswin。您的語法示例將'Deployment'和'Service'合併爲一個非常有用! – Raj
我很困惑在同一個服務中使用'port:80'和'nodePort:32756'。你能解釋爲什麼他們都需要? – AIon
'port:80'表示如果你將服務作爲一個實體來處理,例如通過其名稱或服務IP的DNS條目,端口80將轉發給提供實際服務的PODS。 'nodePort:32xxx'表示如果你對羣集節點進行尋址,例如從外部通過負載均衡器或節點IP,端口32xxx將轉發到提供實際服務的PODS。 –