首页 文章

Kubernetes部署和初始容器

提问于
浏览
3

learned recently,Kubernetes有一个名为Init Containers的功能 . 太棒了,因为我可以使用此功能等待我的postgres服务,并在我的Web应用程序服务运行之前创建/迁移数据库 .

但是,似乎只能在Pod yaml文件中配置Init Containers . 有没有办法通过部署yaml文件来做到这一点?或者我必须选择?

2 回答

  • 3

    为避免混淆,请回答您的具体问题 . 我同意oswin你可能想考虑另一种方法 .

    是的,您可以在部署中使用init容器 . 这是一个使用旧样式(1.6之前版本)的例子,但它应该有效

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: 'nginx'
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: 'nginx'
    
      template:
        metadata:
          labels:
            app: 'nginx'
          annotations:
            pod.beta.kubernetes.io/init-containers: '[
                {
                    "name": "install",
                    "image": "busybox",
                    "imagePullPolicy": "IfNotPresent",
                    "command": ["wget", "-O", "/application/index.html", "http://kubernetes.io/index.html"],
                    "volumeMounts": [
                        {
                          "name": "application",
                          "mountPath": "/application"
                        }
                    ]
                }
            ]'
        spec:
          volumes:
            - name: 'application'
              emptyDir: {}
    
          containers:
    
          - name: webserver
            image: 'nginx'
            ports:
            - name: http
              containerPort: 80
            volumeMounts:
              - name: 'application'
                mountPath: '/application'
    
  • 4

    您可能希望在此用例中使用就绪探针而不是init容器 . 看看这个link和一个blog . 另请注意,部署不会将流量发送到未准备好报告的窗格 - 如果这是您的担心 .

相关问题