kubernetes 初始化后如何运行命令

y0u0uwnf  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(3)|浏览(176)

我想在部署初始化成功后运行特定命令。
这是我的yaml文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: auth
spec:
  replicas: 1
  template:
    metadata:
        labels:
          app: auth
    spec:
      containers:
        - name: auth
          image: {{my-service-image}}
          env:
          - name: NODE_ENV
            value: "docker-dev"
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
          ports:
            - containerPort: 3000

但是,我希望在成功初始化部署并运行Pod之后(而不是之前)运行数据库迁移命令。
我可以为每个pod手动执行此操作(使用kubectl exec),但这不是很好的可扩展性。

8hhllhi2

8hhllhi21#

我使用lifecycles解决了这个问题:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: auth
spec:
  replicas: 1
  template:
    metadata:
        labels:
          app: auth
    spec:
      containers:
        - name: auth
          image: {{my-service-image}}
          env:
          - name: NODE_ENV
            value: "docker-dev"
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
          ports:
            - containerPort: 3000
          lifecycle:
            postStart:
              exec:
                command: ["/bin/sh", "-c", {{cmd}}]
svdrlsy4

svdrlsy42#

您可以使用Helm来部署一组Kubernetes资源。然后,使用Helm hook(例如post-installpost-upgrade)在单独的Docker容器中运行Job。将作业设置为调用数据库迁移。一个作业将运行〉=1个Pod直到完成,因此非常适合此处。

ztigrdn8

ztigrdn83#

我选择使用readinessProbe
我的应用程序需要在进程完全启动后进行配置。postStart命令在应用程序准备就绪之前运行。

readinessProbe:
  exec:
    command: [healthcheck]
  initialDelaySeconds: 30
  periodSeconds: 2
  timeoutSeconds: 1
  successThreshold: 3
  failureThreshold: 10

相关问题