如何配置Kubernetes Multi-Pod Deployment

6yt4nkrj  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(3)|浏览(125)

我想通过k8s Deployment对象管理我的部署来部署应用程序集群。文件让我非常困惑。我的基本布局具有以下组件,这些组件可以独立缩放:

  1. API服务器
  2. UI服务器
  3. Redis缓存
    1.定时器/计划任务服务器
    从技术上讲,上述所有4个都属于独立缩放的单独吊舱。
    我的问题是:
    1.我是否需要创建pod.yml文件,然后在deployment.yml文件中引用它们,或者部署文件也可以嵌入pod定义?
  4. K8s文档似乎暗示Deploymentspec部分等同于定义 one pod。对吗?如果我想以声明方式描述多pod部署,该怎么办?我是否需要多个部署.yml文件?
0kjbasz6

0kjbasz61#

Pagid的答案包含了大部分的基础知识。您应该为您的方案创建4个Deployment。每个部署都将创建一个ReplicaSet,该ReplicaSetDeployment调度和监督Pod集合。
每个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在集群的虚拟网络中协同工作。
  • 要访问一个Deployment,它可能由运行在不同节点上的许多Pod组成,您必须创建一个Service。
  • 部署意味着包含无状态服务。如果你需要存储一个状态,你需要创建StatefulSet(例如:用于数据库服务)。
dgtucam1

dgtucam12#

您可以使用Kubernetes API reference进行Deployment,您会发现spec-> template字段的类型为PodTemplateSpec沿着相关注解(Template describes the pod that will be created.),它会回答您的问题。更详细的描述当然可以在Deployment user guide中找到。
回答你的问题。。
1)PodsDeployment管理,单独定义它们没有意义,因为它们是由Deployment按需创建的。请记住,同一pod类型可能有更多副本。
2)对于列表中的每个应用程序,您必须定义一个Deployment-当涉及到不同的副本计数和应用程序推出时,这也是有意义的。
3)* 你没有问过这个问题,但它是相关的 * -沿着单独的Deployments之外,你的每个应用程序还需要一个专用的Service,以便其他应用程序可以访问它。

js4nwp54

js4nwp543#

附加信息:
API服务器使用部署
UI服务器使用部署
Redis缓存使用statefulset
定时器/调度任务服务器可能使用statefulset(如果您的服务在中有某些状态)

相关问题