首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes: kompose中缺少的选择器字段

kubernetes: kompose中缺少的选择器字段
EN

Stack Overflow用户
提问于 2017-12-21 12:16:10
回答 3查看 1.5K关注 0票数 0

我有一个docker-compose.yml文件,我们一直使用它来设置我们的开发环境。

该文件声明了一些服务,它们都或多或少遵循相同的模式:

代码语言:javascript
复制
services:

   service_1:
      image: some_image_1
      enviroment:
        - ENV_VAR_1
        - ENV_VAR_2
     depends_on:
        - another_service_of_the_same_compose_file

从迁移到kubernetes的角度来看,运行时:

代码语言:javascript
复制
kompose convert -f docker-compose.yml 

为每个服务生成一对部署/服务清单。

所产生的有关部署的两个问题:

1

正式文件中的示例似乎暗示,部署需要selector字段来了解要管理的吊舱。

但是,创建的部署清单不包括selector字段,如下所示:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -f docker-compose.yml
    kompose.version: 1.6.0 (e4adfef)
  creationTimestamp: null
  labels:
    io.kompose.service: service_1
  name: service_1
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: service_1
    spec:
      containers:
      - image: my_image
        name: my_image_name
        resources: {}
      restartPolicy: Always
status: {}

2

生成的部署清单中的apiVersionextensions/v1beta1,但是正式文件默认为apps/v1Deployments部分中的示例。这项建议似乎是

对于1.9.0之前的版本,请使用app/v1beta 2

哪个版本是正确的?(使用kubernetes 1.8)

EN

回答 3

Stack Overflow用户

发布于 2017-12-21 13:04:33

首先,我们说KubernetesKompose是两个不同的独立系统。Kompose试图将所有的依赖与kubernetes相匹配。

目前,所有选择器的字段都是由kubernetes.In未来生成的,这可能由我们来完成。

如果要检查选择器的字段,请使用以下命令

代码语言:javascript
复制
kubectl get deploy 

kubectl describe deploy DEPLOY_NAME 

在版本k8s 1.9之后,所有长期运行的对象都将成为/apps组的一部分。

我们很高兴地宣布应用程序/v1工作负载API的通用可用性(GA),该API现在默认启用。Apps工作负载API将DaemonSet、Deployment、ReplicaSet和StatefulSet API组合在一起,以构成库伯奈特中长期运行的无状态和有状态工作负载的基础。注意,批处理工作负载API (Job和CronJob)不是这项工作的一部分,它将有一条通往GA稳定性的独立路径。

我已附上该链接作进一步研究之用。

kubernetes-19-工作量

票数 0
EN

Stack Overflow用户

发布于 2017-12-22 12:49:30

  1. 由于部署不需要选择器字段,而且Kompose不知道集群的节点,因此它不设置选择器(基本上告诉k8s哪些节点在哪个节点中运行pods)。
  2. 我不会编辑每个版本,因为Kompose假设该版本定义了资源的其余部分。另外,如果您正在使用kubernetes 1.8,请阅读1.8docs https://v1-8.docs.kubernetes.io/docs/
票数 0
EN

Stack Overflow用户

发布于 2020-02-14 15:02:12

在kubernetes 1.16中,部署的spec.selector 成了需要。Kompose (从1.20开始)还没有自动完成这一任务。您必须将其添加到它创建的每个*-deployment.yaml文件中:

代码语言:javascript
复制
  selector:
    matchLabels:
      io.kompose.service: alignment-processor

如果使用像jetbrains这样的IDE,可以在放置转换结果的文件夹上使用以下搜索/替换模式:

搜索这个多行regexp:

代码语言:javascript
复制
    io.kompose.service: (.*)
  name: \1
spec:
  replicas: 1
  template:

用以下模式取代:

代码语言:javascript
复制
    io.kompose.service: $1
  name: $1
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: $1
  template:

(.*)捕获服务的名称,\1匹配(第一个和唯一的)捕获,$1替换替换中的捕获。

您还必须在所有extensions/v1beta1文件中用apps/v1替换所有*-deployment.yaml

我也发现秘密需要稍微按摩一下,但这超出了这个问题的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47924813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档