7.2. 创建 Data Grid 服务 pod

要使用自定义缓存定义以及 Data Grid 功能(如跨站点复制),请创建 Data Grid 服务 pod 集群。

流程

  1. 创建一个 Infinispan CR,设置 spec.service.type: DataGrid,并配置任何其他 Data Grid 服务资源。

    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: infinispan
    spec:
      replicas: 2
      service:
        type: DataGrid
    重要

    在创建 pod 后,您无法更改 spec.service.type 字段。要更改服务类型,必须删除现有 pod 并创建新 pod。

  2. 应用您的 Infinispan CR 来创建集群。

7.2.1. data Grid service CR

本主题描述了 Data Grid 服务 pod 的 Infinispan CR。

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: infinispan
  annotations:
    infinispan.org/monitoring: 'true'
spec:
  replicas: 6
  upgrades:
    type: Shutdown
  service:
    type: DataGrid
    container:
      storage: 2Gi
      # The ephemeralStorage and storageClassName fields are mutually exclusive.
      ephemeralStorage: false
      storageClassName: my-storage-class
    sites:
      local:
      name: azure
      expose:
        type: LoadBalancer
      locations:
      - name: azure
        url: openshift://api.azure.host:6443
        secretName: azure-token
      - name: aws
        clusterName: infinispan
        namespace: rhdg-namespace
        url: openshift://api.aws.host:6443
        secretName: aws-token
  security:
    endpointSecretName: endpoint-identities
    endpointEncryption:
        type: Secret
        certSecretName: tls-secret
  container:
    extraJvmOpts: "-XX:NativeMemoryTracking=summary"
    cpu: "2000m:1000m"
    memory: "2Gi:1Gi"
  logging:
    categories:
      org.infinispan: debug
      org.jgroups: debug
      org.jgroups.protocols.TCP: error
      org.jgroups.protocols.relay.RELAY2: error
  expose:
    type: LoadBalancer
  configMapName: "my-cluster-config"
  configListener:
    enabled: true
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchLabels:
              app: infinispan-pod
              clusterName: infinispan
              infinispan_cr: infinispan
          topologyKey: "kubernetes.io/hostname"
字段描述

metadata.name

为您的 Data Grid 集群命名。

metadata.annotations.infinispan.org/monitoring

为集群自动创建 ServiceMonitor

spec.replicas

指定集群中的 pod 数量。

spec.upgrades.type

控制当有新版本可用时,Data Grid Operator 如何升级您的 Data Grid 集群。

spec.service.type

配置类型 Data Grid 服务。DataGrid 值创建一个带有 Data Grid 服务 pod 的集群。

spec.service.container

为 Data Grid 服务 pod 配置存储资源。

spec.service.sites

配置跨站点复制。

spec.security.endpointSecretName

指定包含 Data Grid 用户凭证的身份验证 secret。

spec.security.endpointEncryption

指定 TLS 证书和密钥存储来加密客户端连接。

spec.container

为 Data Grid pod 指定 JVM、CPU 和内存资源。

spec.logging

配置数据网格日志类别。

spec.expose

控制如何在网络上公开 Data Grid 端点。

spec.configMapName

指定包含 Data Grid 配置的 ConfigMap

spec.configListener

在每个 Data Grid 集群中创建一个 监听器 pod,它允许 Data Grid Operator 使用 Data Grid 资源(如 Cache CR)协调服务器端修改。

侦听器 pod 使用最少的资源,并默认启用。设置 false 时会删除 监听器 pod 并禁用双向协调。只有在不需要通过 Data Grid Console、CLI 或客户端应用程序创建的 Data Grid 资源声明 Kubernetes 表示时才应执行此操作。

spec.affinity

配置用于保证 Data Grid 可用性的反关联性策略。