最近搞k8s,需要把docker-compose配置转为k8s的配置文件,涉及到的地方主要在下面。

挂载volume

docker-compose里的写法:

service:
  relay:
    image: getsentry/relay:22.6.0
    volumes:
      - "./geoip:/sentry"
      - type: bind
        read_only: true
        source: ./relay
        target: /work/.relay
      - type: bind
        read_only: true
        source: ./geoip
        target: /geoip

k8s通过volume名称对应

spec:
  containers:
    - name: sentry-relay
      image: getsentry/relay:22.6.0
      volumeMounts:
        - mountPath: /work/.relay
          name: v-relay-config
        - mountPath: /geoip
          name: v-relay-geoip
  volumes:
    - name: v-relay-config
      hostPath:
        path: ./relay
        type: Directory
    - name: v-relay-geoip
      hostPath:
        path: ./geoip
        type: Directory

声明环境变量

docker-compose的写法

snuba:
  image: "$SNUBA_IMAGE"
  environment:
    SNUBA_SETTINGS: distributed
    CLICKHOUSE_HOST: 172.17.183.16

Pod

spec:
  containers:
    - name: sentry-snuba-api
      image: getsentry/snuba:22.6.0
      env:
        - name: SNUBA_SETTINGS
          value: "distributed"
        - name: CLICKHOUSE_HOST
          value: "172.17.183.16"

执行入口命令

更多请参考文档:https://kubernetes.io/zh-cn/docs/tasks/inject-data-application/define-command-argument-container/

docker-compose的写法

  snuba-consumer:
    <<: *snuba_defaults
    command: consumer --storage errors --auto-offset-reset=latest --max-batch-time-ms 750

k8s

spec:
  containers:
    - name: sentry-snuba-consumer
      image: getsentry/snuba:22.6.0
      command: ["consumer", "--storage", "errors", "--auto-offset-reset=latest", "--max-batch-time-ms", "750"]

depend on

docker-compose里经常会有一个服务依赖于另一个服务的情况:

  nginx:
    image: "nginx:1.21.6-alpine"
    depends_on:
      - web
      - relay

然而在k8s里这种情况并不好处理,原则上这不关k8s的事,每个pod应该是互不干扰的无状态服务,所以应该交给服务自身去考虑。

更多补充…

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐