6.2.2. 创建初始容器


以下示例概述了一个包含两个初始容器的简单 pod。一个用于等待 myservice,另一个用于等待 mydb。两个容器完成后,pod 都会启动。

流程

  1. 为初始容器创建 YAML 文件:

    apiVersion: v1
    kind: Pod
    metadata:
      name: myapp-pod
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: registry.access.redhat.com/ubi8/ubi:latest
        command: ['sh', '-c', 'echo The app is running! && sleep 3600']
      initContainers:
      - name: init-myservice
        image: registry.access.redhat.com/ubi8/ubi:latest
        command: ['sh', '-c', 'until getent hosts myservice; do echo waiting for myservice; sleep 2; done;']
      - name: init-mydb
        image: registry.access.redhat.com/ubi8/ubi:latest
        command: ['sh', '-c', 'until getent hosts mydb; do echo waiting for mydb; sleep 2; done;']
  2. myservice 服务创建 YAML 文件。

    kind: Service
    apiVersion: v1
    metadata:
      name: myservice
    spec:
      ports:
      - protocol: TCP
        port: 80
        targetPort: 9376
  3. mydb 服务创建 YAML 文件。

    kind: Service
    apiVersion: v1
    metadata:
      name: mydb
    spec:
      ports:
      - protocol: TCP
        port: 80
        targetPort: 9377
  4. 运行以下命令来创建 myapp-pod

    $ oc create -f myapp.yaml

    输出示例

    pod/myapp-pod created

  5. 查看 pod 的状态:

    $ oc get pods

    输出示例

    NAME                          READY     STATUS              RESTARTS   AGE
    myapp-pod                     0/1       Init:0/2            0          5s

    注意 pod 状态指出它正在等待

  6. 运行以下命令来创建上述服务:

    $ oc create -f mydb.yaml
    $ oc create -f myservice.yaml
  7. 查看 pod 的状态:

    $ oc get pods

    输出示例

    NAME                          READY     STATUS              RESTARTS   AGE
    myapp-pod                     1/1       Running             0          2m

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.