15.2. 创建 Pod 预设置


以下示例演示了如何创建和使用 pod 预设置。

添加 Admission Controller
管理员可以检查 /etc/origin/master/master-config.yaml 文件,以确保 pod 预设置准入控制器插件存在。如果准入控制器不存在,使用以下内容添加插件:
admissionConfig:
  pluginConfig:
    PodPreset:
      configuration:
        kind: DefaultAdmissionConfig
        apiVersion: v1
        disable: false

然后,重启 OpenShift Container Platform 服务:

# systemctl restart atomic-openshift-master-api atomic-openshift-master-controllers
创建 Pod Preset
管理员或开发人员创建带有 settings.k8s.io/v1alpha1 API 的 pod 预设置、要注入的信息,以及要与 pod 匹配的标签选择器:
kind: PodPreset
apiVersion: settings.k8s.io/v1alpha1
metadata:
  name: allow-database
spec:
  selector:
    matchLabels:
      role: frontend
  env:
    - name: DB_PORT
      value: "6379"
  volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
    - name: cache-volume
      emptyDir: {}
创建 Pod

开发人员创建了 pod,其标签与 pod 预set 中的标签选择器匹配:

  1. 创建一个标准 pod 规格,带有与 pod 预先设置的标签选择器匹配的标签:

    apiVersion: v1
    kind: Pod
    metadata:
      name: website
      labels:
        app: website
        role: frontend
    spec:
      containers:
        - name: website
          image: ecorp/website
          ports:
            - containerPort: 80
  2. 创建 pod:

    $ oc create -f pod.yaml
  3. 创建后检查 pod 规格:

    $ oc get pod website -o yaml
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: website
      labels:
        app: website
        role: frontend
      annotations:
        podpreset.admission.kubernetes.io/allow-database: "resource version" 1
    spec:
      containers:
        - name: website
          image: ecorp/website
          volumeMounts: 2
            - mountPath: /cache
              name: cache-volume
          ports:
            - containerPort: 80
          env: 3
            - name: DB_PORT
              value: "6379"
      volumes:
        - name: cache-volume
          emptyDir: {}
    1 2 3
    该注解存在,并且注入了容器存储和环境变量。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.