当前位置: 首页 > 知识库问答 >
问题:

初始化后如何运行命令

包唯
2023-03-14

我想在部署初始化成功后运行特定的命令。

这是我的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之后(而不是之前)运行db迁移命令。

我可以为每个pod手动执行(使用kubectl exec),但这不是很好的扩展性。

共有3个答案

程凯定
2023-03-14

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

readinessProbe:
  exec:
    command: [healthcheck]
  initialDelaySeconds: 30
  periodSeconds: 2
  timeoutSeconds: 1
  successThreshold: 3
  failureThreshold: 10    
梅跃
2023-03-14

可以使用Helm部署一组库伯内特斯资源。然后,使用Helm钩子,例如安装后或升级后,在单独的docker容器中运行作业。将作业设置为调用数据库迁移。一个工作将运行

酆奇文
2023-03-14

我用生命周期解决了它:

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}}]
 类似资料:
  • 我有一个JavaFX应用程序,它与用Java编写的控制器类一起使用FXML。在Java控制器中,在FXML节点初始化之前,我需要小心不要对其进行操作(否则我会得到一个NullPointerException),这在运行初始化方法之前是无法保证的。所以我发现自己经常这样做: 控制器在FXML文件中设置如下: 然后是Java文件中的控制器。 这是可行的,但它笨重且重复。我必须创建globalValue

  • 我有我的文件下面: 我也有例子。: 出于某种原因,当我做在我的根目录(不是)我得到错误: 有人能给我解释一下这个错误中的问题吗?这是因为我的依赖项没有正确安装,还是因为其他原因?

  • 我用run方法调用它。如果有人能提前解决感谢

  • 我一直在查看Sitecore。内核,但似乎找不到Sitecore运行初始化管道的位置。它是在每个页面请求上运行还是在应用程序启动时只运行一次?你能告诉我为这个管道调用Run方法的确切位置吗? 更新我最后问这个问题的原因是因为我在Sitecore的代码中追溯了管道的执行。这是我发现的: 管道运行处理器... 调用... 调用... 创建新的对象 事情变得有点模糊。。。 返回新路由HttpHandle

  • 问题内容: 我通过以下方式初始化了SunPKCS11提供程序: 然后,我使用此提供程序初始化KeyStore,以将密钥用于密码操作。 密码操作完成后, 如何使用PKCS11令牌完成会话? 我曾尝试删除该提供程序,但没有成功。 下次我尝试与令牌通信时,我从令牌 CKR_CRYPTOKI_ALREADY_INITIALIZED* 抛出此异常 * 更新 : 我努力了 但它也不起作用。 我有一个用例,其中

  • 问题内容: 我正在编写一个初始化脚本,该脚本应该以与root用户不同的用户身份执行单个命令。这是我目前正在做的事情: 通常,这在Ubuntu / Debian上可以正常工作,但是在RHEL上,该脚本以挂起方式执行。 还有另一种以其他用户身份运行命令的方法吗? (请注意,我不能使用lsb初始化函数,因为它们在RHEL / Centos 5.x中不可用。) 问题答案: 在RHEL系统上,该脚本旨在提供