kubernetes如何仅为副本编写部署yaml

kubernetes如何仅为副本编写部署yaml,kubernetes,Kubernetes,我有一个pod yaml文件(见下文)。它有我想要的所有属性,除了副本属性。因此,我必须编写部署yaml apiVersion: v1 kind: Pod metadata: name: app-ykt labels: app: app-ykt purpose: ykt_production spec: containers: - name: app-ykt image: app imagePullPolicy: IfNotPresent

我有一个pod yaml文件(见下文)。它有我想要的所有属性,除了副本属性。因此,我必须编写部署yaml

apiVersion: v1
kind: Pod
metadata:
  name: app-ykt
  labels:
    app: app-ykt
    purpose: ykt_production
spec:
  containers:
  - name: app-ykt
    image: app
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80
    volumeMounts:
      - name: volume-app-ykt
        mountPath: /usr/application
    env:
      - name: spring.config.location
        value: application.properties
  volumes:
      - name: volume-app-ykt
        hostPath:
          path: /opt/docker/datalook-pre-core
          type: Directory
在编写部署文件时,我必须提到映像和其他我不想要的属性。更重要的是,它创建了另一个pod,并且缺少一些我必须拥有的属性,例如卷。我的目标就是这个复制品,这样我就可以获得吊舱的高可用性。有解决办法吗

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-ykt
  labels:
    app: app-ykt
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-ykt
  template:
    metadata:
      labels:
        app: app-ykt
    spec:
      containers:
      - name: app-ykt
        image: app
        ports:
        - containerPort: 80

首先,我认为hostPath卷不是HA解决方案,所以您应该考虑在kubernetes集群中以ReadWriteMany持久卷的形式共享一个卷。 然后,您还需要复制的POD(如服务[0])之间的内部负载平衡器

我希望它能帮助你


[0][

首先,我认为hostPath卷不是HA解决方案,所以您应该考虑在kubernetes集群中以ReadWriteMany持久卷的形式共享一个卷。 然后,您还需要复制的POD(如服务[0])之间的内部负载平衡器

我希望它能帮助你


[0][

每个Kubernetes对象都有自己的要求。如果要创建
部署
,则必须指定此属性。
部署
对象是
复制集
创建和管理它的“抽象”层。如果没有容器属性描述,则无法创建任何
部署
(RelicaSet)(图像、卷等)

如果你要使用Kubernetes,你需要通过“Kubernetes方式”部署你的应用。你可以用你的应用描述创建
部署
.yml文件,然后你可以将
部署
扩展到任意数量的副本

服务
和可能的
入口
对象可以帮助您在副本之间实现负载平衡,正如@Daein在上面提到的那样

您的
部署可能如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-ykt
  namespace: elk
  labels:
    app: app-ykt
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-ykt
  template:
    metadata:
      labels:
        app: app-ykt
    spec:
      containers:
      - name: app-ykt
        image: <your_image>
        ports:
        - containerPort: 80
        env:
        - name: spring.config.location
          value: application.properties
        volumeMounts:
          - name: volume-app-ykt
            mountPath: /usr/application
      volumes:
      - name: volume-app-ykt
        hostPath:
          path: /opt/docker/datalook-pre-core
          type: Directory
apiVersion:apps/v1 种类:部署 元数据: 名称:应用程序ykt 名称空间:麋鹿 标签: app:app ykt 规格: 副本:3份 选择器: 火柴标签: app:app ykt 模板: 元数据: 标签: app:app ykt 规格: 容器: -名称:应用程序ykt 图片: 端口: -集装箱港口:80 环境: -名称:spring.config.location 值:application.properties 体积数量: -名称:卷应用程序ykt 装载路径:/usr/应用程序 卷数: -名称:卷应用程序ykt 主机路径: 路径:/opt/docker/datalook预核心 类型:目录
这将创建
Deployment
,这反过来将自动创建3个副本(3个pod),其中只有一个
app ykt
容器

注意:正如@Daein提到的,我也认为在这里使用
hostPath
不是一个好主意,尽管我不知道您的应用程序配置。
hostPath
通常用于访问节点上的任何文件

请记住,只有在需要读或写时才使用hostPath卷 节点上的系统文件。切勿使用它们跨POD持久化数据。 “Kubernetes在行动”(c)Marko Luksa


每个Kubernetes对象都有自己的要求。如果要创建
Deployment
,则必须指定此属性。
Deployment
对象是
ReplicaSet
创建和管理它的“抽象”层。如果没有容器属性描述,则无法创建任何
Deployment
(RelicaSet)(图像、卷等)

如果你要使用Kubernetes,你需要通过“Kubernetes方式”部署你的应用。你可以用你的应用描述创建
部署
.yml文件,然后你可以将
部署
扩展到任意数量的副本

服务
和可能的
入口
对象可以帮助您在副本之间实现负载平衡,正如@Daein在上面提到的那样

您的
部署可能如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-ykt
  namespace: elk
  labels:
    app: app-ykt
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-ykt
  template:
    metadata:
      labels:
        app: app-ykt
    spec:
      containers:
      - name: app-ykt
        image: <your_image>
        ports:
        - containerPort: 80
        env:
        - name: spring.config.location
          value: application.properties
        volumeMounts:
          - name: volume-app-ykt
            mountPath: /usr/application
      volumes:
      - name: volume-app-ykt
        hostPath:
          path: /opt/docker/datalook-pre-core
          type: Directory
apiVersion:apps/v1 种类:部署 元数据: 名称:应用程序ykt 名称空间:麋鹿 标签: app:app ykt 规格: 副本:3份 选择器: 火柴标签: app:app ykt 模板: 元数据: 标签: app:app ykt 规格: 容器: -名称:应用程序ykt 图片: 端口: -集装箱港口:80 环境: -名称:spring.config.location 值:application.properties 体积数量: -名称:卷应用程序ykt 装载路径:/usr/应用程序 卷数: -名称:卷应用程序ykt 主机路径: 路径:/opt/docker/datalook预核心 类型:目录
这将创建
Deployment
,这反过来将自动创建3个副本(3个pod),其中只有一个
app ykt
容器

注意:正如@Daein提到的,我也认为在这里使用
hostPath
不是一个好主意,尽管我不知道您的应用程序配置。
hostPath
通常用于访问节点上的任何文件

请记住,只有在需要读或写时才使用hostPath卷 节点上的系统文件。切勿使用它们跨POD持久化数据。 “Kubernetes在行动”(c)Marko Luksa


就这个例子而言,如何编写部署yaml文件?如果部署包含Pod拥有的所有字段,那么我只需要编写服务和部署yaml文件。为什么我们仍然需要Pod文件?
Deployment
将创建
Pod
。您根本不需要
Pod
文件。我已经为这个案例更改了我的帖子,即如何编写部署人员t yaml文件?如果部署包含Pod拥有的所有字段,那么我只需要编写服务和部署yaml文件。为什么我们仍然需要Pod文件?
Deployment
将创建
Pod
。你根本不需要
Pod
文件。我已经更改了我的帖子