簡體   English   中英

如何配置Kubernetes Multi-Pod部署

[英]How to configure a Kubernetes Multi-Pod Deployment

我想通過k8s Deployment對象管理我的部署來部署應用程序集群。 文檔讓我非常困惑。 我的基本布局具有以下可獨立擴展的組件:

  1. API服務器
  2. UI服務器
  3. Redis緩存
  4. 定時器/預定任務服務器

從技術上講,以上所有4個屬於獨立縮放的獨立窗格。

我的問題是:

  1. 我是否需要創建pod.yml文件,然后在deployment.yml文件中以某種方式引用它們,或者部署文件是否也可以嵌入pod定義?
  2. K8s文檔似乎暗示Deploymentspec部分等同於定義一個 pod。 那是對的嗎? 如果我想以聲明方式描述多pod部署,該怎么辦? 我是否需要多個deployment.yml文件?

Pagids答案有大部分基礎知識。 您應該為您的方案創建4個Deployments 每個部署都將創建一個ReplicaSet ,用於調度和監督DeploymentPODs集合。

每個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不是可擴展的單元。 安排POD的Deployment是。
  • Deployment旨在代表一組完成單一目的的POD。
  • 您可以在群集的虛擬網絡中將許多Deployments協同工作。
  • 要訪問可能包含在不同節點上運行的許多PODsDeployment ,您必須創建服務。
  • 部署旨在包含無狀態服務。 如果需要存儲狀態,則需要創建StatefulSet (例如,用於數據庫服務)。

您可以使用Kubernetes API參考進行部署 ,您會發現spec - > template字段的類型為PodTemplateSpec以及相關注釋( Template描述將要創建的pod。 )它會回答您的問題。 當然可以在部署用戶指南中找到更長的描述。

回答你的問題......

1) PodsDeployment管理,並且單獨定義它們沒有意義,因為它們是由部署按需創建的。 請記住,可能有更多相同pod類型的副本。

2)對於列表中的每個應用程序,您必須定義一個Deployment - 在差異副本計數和應用程序部署時也是有意義的。

3) 您沒有詢問但是它是相關的 - 除了單獨的Deployments ,您的每個應用程序還需要一個專用Service以便其他人可以訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM