31 Elemental #
31.1 通用 #
31.1.1 公开 Rancher 服务 #
使用 RKE2 或 K3s 时,我们需要通过管理群集公开服务(此处指 Rancher),因为它们默认不会公开。RKE2 中通过 NGINX
入口控制器来实现此目的,K3s 使用的则是 Traefik。当前的工作流程建议使用 MetalLB 来公布服务(通过 L2 或 BGP
通告),并使用相应的入口控制器通过 HelmChartConfig
创建入口,因为创建新的入口对象时会覆盖现有的设置。
安装 Rancher Prime(通过 Helm)并配置必要的值
hostname: rancher-192.168.64.101.sslip.io replicas: 1 bootstrapPassword: Admin global.cattle.psp.enabled: "false"
创建 LoadBalancer 服务以公开 Rancher
kubectl apply -f - <<EOF apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: rke2-ingress-nginx namespace: kube-system spec: valuesContent: |- controller: config: use-forwarded-headers: "true" enable-real-ip: "true" publishService: enabled: true service: enabled: true type: LoadBalancer externalTrafficPolicy: Local EOF
使用我们之前在 Helm 值中设置的 IP 地址为该服务创建 IP 地址池
kubectl apply -f - <<EOF apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: ingress-ippool namespace: metallb-system spec: addresses: - 192.168.64.101/32 serviceAllocation: priority: 100 serviceSelectors: - matchExpressions: - {key: app.kubernetes.io/name, operator: In, values: [rke2-ingress-nginx]} EOF
为该 IP 地址池创建 L2 通告
kubectl apply -f - <<EOF apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: ingress-l2-adv namespace: metallb-system spec: ipAddressPools: - ingress-ippool EOF
确保 Elemental 已正确安装
在管理节点上安装 Elemental Operator 和 Elemental UI
在下游节点上添加 Elemental 配置以及注册代码,这样 Edge Image Builder 将会为计算机提供远程注册选项。
31.2 硬件特定配置 #
31.2.1 可信平台模块 #
必须妥善处理可信平台模块 (TPM) 配置,否则将导致如下所示的错误:
Nov 25 18:17:06 eled elemental-register[4038]: Error: registering machine: cannot generate authentication token: opening tpm for getting attestation data: TPM device not available
可通过以下方法之一缓解此问题:
在虚拟机设置中启用 TPM
MacOS 上的 UTM 示例
通过在
MachineRegistration
资源中为 TPM 种子使用负值来模拟 TPM
apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:
name: ...
namespace: ...
spec:
...
elemental:
...
registration:
emulate-tpm: true
emulated-tpm-seed: -1
在
MachineRegistration
资源中禁用 TPM
apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:
name: ...
namespace: ...
spec:
...
elemental:
...
registration:
emulate-tpm: false