配置
第 1 章 使用 MicroShift 配置文件 复制链接链接已复制到粘贴板!
通过一个 YAML 文件,可根据您的偏好、设置和参数自定义 MicroShift 实例。
如果要使用 kustomize 清单以外的工具通过 MicroShift API 进行配置更改或部署应用程序,您必须等待 greenboot 健康检查完成。这可确保,如果 greenboot 将 rpm-ostree 系统回滚回较早的状态,您的更改不会丢失。
1.1. 配置 Red Hat Device Edge 复制链接链接已复制到粘贴板!
MicroShift 和 Red Hat Enterprise Linux (RHEL)协同工作,将轻量级、单节点 Kubernetes 引入边缘。这种组合意味着只有一个节点同时是 control-plane 和 worker。这也意味着操作系统处理许多功能。您可以通过安装可选 RPM 或 Operator 来添加功能。在很多情况下,除了 MicroShift 服务外,还需要配置操作系统或其他资源。
将许多组件结合到 MicroShift 配置文件 config.yaml。MicroShift 配置文件自定义您的应用平台,并可启用许多高级功能。例如:
- 默认情况下,ingress 可用,但您可以使用 MicroShift 配置文件中的参数添加 TLS 和路由准入规格等高级功能。
-
如果不需要存储,您可以使用 MicroShift 配置文件禁用内置存储供应商。如果要使用内置存储供应商,您必须在
lvmd.config文件中进行调整。本例中,MicroShift 配置文件的角色是设置是否使用默认存储供应商。 -
高级网络功能,如使用多个网络。Multus 软件包是一个可安装的 RPM,但您使用 MicroShift 配置文件设置访问权限来设置参数。另外,您必须通过主机在网络上配置网络设置。为方便起见,会自动安装
config.yaml.default文件。您可以复制并重命名此文件config.yaml,并将其用作您自己的自定义配置的起点。
您还可以将在没有配置的情况下运行的功能添加到 MicroShift config.yaml 文件中。例如,您可以在不配置 MicroShift 的情况下为应用程序管理安装和配置 GitOps。
1.2. 默认设置 复制链接链接已复制到粘贴板!
如果没有创建 config.yaml 文件,则使用默认值。以下示例显示了默认配置设置。
要查看默认值,请运行以下命令:
microshift show-config
$ microshift show-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 格式输出的默认值
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定 API 服务器公告给集群成员的 IP 地址的字符串。默认值根据服务网络的地址计算。
- 2
- 在自动删除前保留日志文件的时长。
maxFileAge参数中的默认值为0表示日志文件永远不会根据年龄删除。可以配置这个值。 - 3
- 默认情况下,当
audit.log文件达到maxFileSize限制时,audit.log文件会被轮转,MicroShift 开始写入新的audit.log文件。可以配置这个值。 - 4
- 保存的日志文件总数。默认情况下,MicroShift 保留 10 个日志文件。创建过量文件时,会删除最旧的文件。可以配置这个值。
- 5
- 仅记录读取和写入请求的日志元数据 ;除了 OAuth 访问令牌请求外,不记录请求正文。如果没有指定此字段,则使用
Default配置集。 - 6
- API 服务器证书的主题备用名称。
- 7
- 日志详细程度。此字段的有效值为
Normal,Debug,Trace, 或TraceAll。 - 8
- 默认情况下,
etcd根据需要使用尽可能多的内存来处理系统上的负载。但是,在内存受限系统中,可能需要限制在给定时间可以使用etcd的内存量。 - 9
- 集群的基域。所有管理的 DNS 记录都是这个基础的子域。
- 10
ingress.listenAddress值默认为主机的整个网络。有效可配置的值是一个列表,可以是单个 IP 地址或 NIC 名称,也可以是多个 IP 地址和 NIC 名称。- 11
- 显示的默认端口。可配置。两个端口条目的有效值为 1-65535 范围内的单个唯一端口。
ports.http和ports.https字段的值不能相同。 - 12
- 描述如何处理跨命名空间的主机名声明。默认情况下,允许路由在命名空间间声明相同主机名的不同路径。有效值为
Strict和InterNamespaceAllowed。指定Strict可防止不同命名空间中的路由声明相同的主机名。如果在自定义 MicroShiftconfig.yaml中删除了该值,则会自动设置InterNamespaceAllowed值。 - 13
- 默认路由器状态,可以是
Managed或Removed。 - 14
- 用于扫描
kustomization文件的位置,用于加载清单。设置为仅扫描这些路径的路径列表。设置为空列表以禁用加载清单。列表中的条目可以是 glob 模式,以匹配多个子目录。 - 15
- 从中分配 Pod IP 地址的 IP 地址块。在安装后,此字段是不可变的。
- 16
- Kubernetes 服务的虚拟 IP 地址块。服务的 IP 地址池.支持单个条目。在安装后,此字段是不可变的。
- 17
- 端口范围允许用于
NodePort类型的 Kubernetes 服务。如果没有指定,则使用默认范围 30000-32767。没有指定NodePort的服务会自动从这个范围内分配一个。可在安装集群后更新此参数。 - 18
- 节点的名称。默认值为 hostname。如果非空,则使用此字符串来识别节点,而不是主机名。在 MicroShift 首次启动后,您无法更改此不可变设置。
- 19
- 节点的 IP 地址。默认值是默认路由的 IP 地址。
1.3. 使用 YAML 配置文件 复制链接链接已复制到粘贴板!
在启动时,MicroShift 会检查系统范围的 /etc/microshift/ 目录,以获取名为 config.yaml 的配置文件。如果目录中不存在配置文件,则使用内置默认值来启动服务。
您必须使用 MicroShift 配置文件与主机(有时、应用程序和服务设置)结合使用。在调整 MicroShift 集群的设置时,请确保根据需要在 tandem 中配置每个功能。
为方便起见,会自动安装您的输入的 config.yaml.default 文件。
1.3.1. 配置广告地址网络标记 复制链接链接已复制到粘贴板!
apiserver.advertiseAddress 标志指定将 API 服务器公告给集群成员的 IP 地址。此地址必须可以被集群访问。您可以在此处设置自定义 IP 地址,但还必须将 IP 地址添加到主机接口。自定义此参数 preempts MicroShift,不向 br-ex 网络接口添加默认 IP 地址。
如果您自定义 advertiseAddress IP 地址,请确保集群可在 MicroShift 启动时通过添加 IP 地址到主机接口来访问它。
如果未设置,则默认值将在服务网络后设置为下一个直接子网。例如,当服务网络为 10.43.0.0/16 时,advertiseAddress 被设置为 10.44.0.0/32。
1.3.2. 为 NodePort 服务扩展端口范围 复制链接链接已复制到粘贴板!
serviceNodePortRange 设置扩展可用于 NodePort 服务的端口范围。当需要公开 30000-32767 范围下的特定标准端口时,这个选项很有用。例如,如果您的设备需要公开网络上的 1883/tcp MQ 遥测传输(MQTT)端口,因为客户端设备无法使用不同的端口。
NodePort 可以与系统端口重叠,从而导致系统或 MicroShift 出现故障。
在配置 NodePort 服务范围时请考虑以下几点:
-
不要在没有明确选择了
nodePort的情况下创建任何 NodePort 服务。如果没有指定显式nodePort,则端口由kube-apiserver随机分配,且无法预测。 -
不要为在设备
HostNetwork上公开的系统服务端口、MicroShift 端口或其他服务创建任何 NodePort 服务。 表一指定在扩展端口范围时要避免的端口:
Expand 表 1.1. 避免的端口。 端口 描述 22/tcp
SSH 端口
80/tcp
OpenShift Router HTTP 端点
443/tcp
OpenShift Router HTTPS 端点
1936/tcp
openshift-router 的指标服务,目前不会公开
2379/tcp
etcd 端口
2380/tcp
etcd 端口
6443
kubernetes API
8445/tcp
openshift-route-controller-manager
9537/tcp
cri-o 指标
10250/tcp
kubelet
10248/tcp
kubelet healthz port
10259/tcp
kube 调度程序
第 2 章 使用 kubeconfig 进行集群访问 复制链接链接已复制到粘贴板!
了解如何将 kubeconfig 文件用于 MicroShift 部署。CLI 工具使用 kubeconfig 文件与集群的 API 服务器通信。这些文件提供身份验证所需的集群详情、IP 地址和其他信息。
2.1. 用于配置集群访问的 kubeconfig 文件 复制链接链接已复制到粘贴板!
MicroShift 中使用的两个 kubeconfig 文件是本地访问和远程访问。每次 MicroShift 启动时,都会生成一组用于本地和远程访问 API 服务器的 kubeconfig 文件。这些文件在 /var/lib/microshift/resources/kubeadmin/ 目录中生成,使用预先存在的配置信息。
每种访问类型都需要使用不同的证书颁发机构(CA)签名的证书。生成一个多个 kubeconfig 文件可满足这一需求。
您可以将适当的 kubeconfig 文件用于每个情况下所需的访问类型,以提供身份验证详情。MicroShift kubeconfig 文件的内容由默认的内置值或 config.yaml 文件决定。
必须存在一个 kubeconfig 文件,集群才能被访问。这些值从内置默认值或 config.yaml (如果创建)应用。
kubeconfig 文件的内容
2.2. 本地访问 kubeconfig 文件 复制链接链接已复制到粘贴板!
本地访问 kubeconfig 文件被写入 /var/lib/microshift/resources/kubeadmin/kubeconfig。此 kubeconfig 文件提供对使用 localhost 的 API 服务器的访问。当您在本地连接集群时,选择这个文件。
用于本地访问的 kubeconfig 内容示例
clusters:
- cluster:
certificate-authority-data: <base64 CA>
server: https://localhost:6443
clusters:
- cluster:
certificate-authority-data: <base64 CA>
server: https://localhost:6443
localhost kubeconfig 文件只能从从同一主机连接到 API 服务器的客户端中使用。文件中的证书不适用于远程连接。
2.2.1. 本地访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤,使用 kubeconfig 文件在本地访问 MicroShift 集群。
先决条件
-
已安装
oc二进制文件。
流程
可选:如果您的 Red Hat Enterprise Linux (RHEL)机器没有
~/.kube/文件夹,请运行以下命令:mkdir -p ~/.kube/
$ mkdir -p ~/.kube/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将生成的本地访问
kubeconfig文件复制到~/.kube/目录中:sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
$ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令更新
~/.kube/config文件的权限:chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入以下命令验证 MicroShift 是否正在运行:
oc get all -A
$ oc get all -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 远程访问 kubeconfig 文件 复制链接链接已复制到粘贴板!
当 MicroShift 集群从外部源连接到 API 服务器时,会使用 SAN 字段中所有替代名称的证书进行验证。MicroShift 使用 hostname 值为外部访问生成默认 kubeconfig。默认值在默认 kubeconfig 文件的 < node.hostnameOverride>、<node.nodeIP > 和 api.<dns.baseDomain > 参数值中设置。
/var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig 文件使用机器的 hostname 或 node.hostnameOverride(如果设置了这个选项)来访问 API 服务器。kubeconfig 文件的 CA 可以在外部访问时验证证书。
用于远程访问的默认 kubeconfig 文件的内容示例
clusters:
- cluster:
certificate-authority-data: <base64 CA>
server: https://microshift-rhel9:6443
clusters:
- cluster:
certificate-authority-data: <base64 CA>
server: https://microshift-rhel9:6443
2.3.1. 远程访问自定义 复制链接链接已复制到粘贴板!
可以生成多个远程访问 kubeconfig 文件值来访问使用不同 IP 地址或主机名的集群。额外的 kubeconfig 文件会为 apiServer.subjectAltNames 参数中的每个条目生成。您可以在 IP 连接时从主机复制远程访问 kubeconfig 文件,然后使用它们从其他工作站访问 API 服务器。
2.4. 为远程访问生成额外的 kubeconfig 文件 复制链接链接已复制到粘贴板!
如果您需要比默认远程访问文件提供更多的主机名或 IP 地址,您可以生成额外的 kubeconfig 文件。
您必须重启 MicroShift 才能实现配置更改。
先决条件
-
您已为 MicroShift 创建了
config.yaml。
流程
可选:您可以显示
config.yaml的内容。运行以下命令:cat /etc/microshift/config.yaml
$ cat /etc/microshift/config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:您可以显示远程访问
kubeconfig文件的内容。运行以下命令:cat /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig
$ cat /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要其他远程访问
kubeconfig文件必须包含红帽构建的 MicroShiftconfig.yaml文件中列出的服务器名称之一。其他kubeconfig文件还必须使用相同的 CA 进行验证。要为其他 DNS 名称 SAN 或外部 IP 地址生成额外的
kubeconfig文件,请将您需要的条目添加到apiServer.subjectAltNames字段。在以下示例中,使用的 DNS 名称为alt-name-1,IP 地址为1.2.3.4。带有额外身份验证值的
config.yaml示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,重启 MicroShift 以应用配置更改并自动生成您需要的
kubeconfig文件:sudo systemctl restart microshift
$ sudo systemctl restart microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要检查其他远程访问
kubeconfig文件的内容,请将config.yaml中列出的名称或 IP 地址插入到cat命令中。例如,以下示例命令中使用alt-name-1:cat /var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfig
$ cat /var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfigCopy to Clipboard Copied! Toggle word wrap Toggle overflow 选择
kubeconfig文件,其中包含您要用来连接集群的 SAN 或 IP 地址。在本例中,cluster.server字段中包含'alt-name-1' 的kubeconfig是正确的文件。额外
kubeconfig文件的内容clusters: - cluster: certificate-authority-data: <base64 CA> server: https://alt-name-1:6443clusters: - cluster: certificate-authority-data: <base64 CA> server: https://alt-name-1:64431 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
/var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfig文件值来自apiServer.subjectAltNames配置值。
所有这些参数都作为通用名称(CN)和主题替代名称(SAN)包含在 API 服务器的外部提供证书中。
2.4.1. 打开防火墙以远程访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤打开防火墙,以便远程用户可以访问 MicroShift 集群。必须在 workstation 用户可以访问集群前完成此步骤。
对于此过程,user@microshift 是 MicroShift 主机上的用户,负责设置该机器,使其可以被单独的工作站上的远程用户访问。
先决条件
-
已安装
oc二进制文件。 - 您的帐户具有集群管理特权。
流程
在 MicroShift 主机上以
user@microshift的身份,运行以下命令来打开 Kubernetes API 服务器的防火墙端口 (6443/tcp):sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
[user@microshift]$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以
user@microshift的身份,输入以下命令验证 MicroShift 是否正在运行:oc get all -A
[user@microshift]$ oc get all -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4.2. 远程访问 MicroShift 集群 复制链接链接已复制到粘贴板!
使用以下步骤,使用 kubeconfig 文件从远程位置访问 MicroShift 集群。
user@workstation 登录用于远程访问主机计算机。该流程中的 <user> 值是 user@workstation 登录到 MicroShift 主机所使用的用户名。
先决条件
-
已安装
oc二进制文件。 -
user@microshift已打开来自本地主机的防火墙。
流程
以
user@workstation的身份,如果 Red Hat Enterprise Linux (RHEL)机器没有,使用以下命令创建一个~/.kube/文件夹:mkdir -p ~/.kube/
[user@workstation]$ mkdir -p ~/.kube/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
user@workstation的身份,运行以下命令来为您的 MicroShift 主机的主机名设置变量:MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>
[user@workstation]$ MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
user@workstation的身份,运行以下命令来复制生成的kubeconfig文件,该文件包含您要从运行 MicroShift 的 RHEL 机器连接到本地机器的主机名或 IP 地址:ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
[user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要为此步骤生成
kubeconfig文件,请参阅为远程访问生成额外的 kubeconfig 文件。以
user@workstation的身份,运行以下命令来更新~/.kube/config文件的权限:chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以
user@workstation的身份,输入以下命令验证 MicroShift 是否正在运行:oc get all -A
[user@workstation]$ oc get all -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 配置自定义证书颁发机构 复制链接链接已复制到粘贴板!
您可以在 MicroShift 服务使用自定义证书颁发机构(CA)来加密连接。
3.1. 自定义证书颁发机构在 MicroShift 中的工作方式 复制链接链接已复制到粘贴板!
默认 API 服务器证书由内部 MicroShift 集群证书颁发机构(CA)发布。默认情况下,集群外的客户端无法验证 API 服务器证书。此证书可以替换为外部由客户端信任的自定义 CA 发布的自定义服务器证书。以下步骤演示了 MicroShift 中的工作流:
- 将证书和密钥复制到主机操作系统中的首选目录中。确保只有 root 用户可以访问这些文件。
通过在 MicroShift
/etc/microshift/config.yaml配置文件中指定证书名称和新的完全限定域名(FQDN)来更新每个自定义 CA 的 MicroShift 配置。每个证书配置都可以包含以下值:
- 证书文件位置是一个必需的值。
包含 API 服务器 DNS 和 IP 地址或 IP 地址范围的一个通用名称。
提示在大多数情况下,MicroShift 为自定义 CA 生成新的
kubeconfig,其中包含您指定的 IP 地址或范围。例外是在为 IP 地址指定通配符时。在这种情况下,MicroShift 会生成一个kubeconfig,其中包含服务器的公共 IP 地址。要使用通配符,您必须使用特定详情更新kubeconfig文件。- 多个主题备用名称(SAN),其中包含 API 服务器 DNS 和 IP 地址或通配符证书。
- 您可以为每个证书提供额外的 DNS 名称。
-
MicroShift 服务重启后,您必须将生成的
kubeconfig文件复制到客户端。 - 在客户端系统上配置额外的 CA。例如,您可以更新 Red Hat Enterprise Linux (RHEL)信任存储中的 CA 捆绑包。
- 证书和密钥从主机上的指定文件位置读取。配置测试和验证通过客户端完成。
- 外部服务器证书不会自动续订。您必须手动轮转外部证书。
如果任何验证失败,MicroShift 服务会跳过自定义配置,并使用默认证书启动。优先级是继续服务不间断。MicroShift 在服务启动时记录错误。常见错误包括过期的证书、缺失的文件或不正确的 IP 地址。
自定义服务器证书必须针对主机操作系统信任根中配置的 CA 数据进行验证。如需更多信息,请参阅 系统范围的信任存储。
3.2. 配置自定义证书颁发机构 复制链接链接已复制到粘贴板!
要使用自定义证书颁发机构(CA)配置外部生成的证书和域名,请将它们添加到 MicroShift /etc/microshift/config.yaml 配置文件中。您还必须配置主机操作系统信任 root。
外部生成的 kubeconfig 文件在 /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig 目录中创建。如果您需要在外部生成的配置之外使用 localhost,请在其默认位置保留原始 kubeconfig 文件。localhost kubeconfig 文件使用自签名证书颁发机构。
先决条件
-
已安装 OpenShift CLI (
oc)。 - 您可以使用具有集群管理角色的用户访问集群。
- 证书颁发机构已发布自定义证书。
-
MicroShift
/etc/microshift/config.yaml配置文件存在。
流程
- 复制您要添加到 MicroShift 主机的信任根中的自定义证书。确保证书和私钥只能被 MicroShift 访问。
对于您需要的每个自定义 CA,使用以下示例
将名为Certificates 的apiServer部分添加到/etc/microshift/config.yamlMicroShift 配置文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启 MicroShift 以应用证书:
systemctl microshift restart
$ systemctl microshift restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
等待几分钟,让系统重新启动并应用自定义服务器。新的
kubeconfig文件在/var/lib/microshift/resources/kubeadmin/目录中生成。 -
将
kubeconfig文件复制到客户端。如果您为 IP 地址指定了通配符,请更新kubeconfig以删除服务器的公共 IP 地址,并使用您要使用的特定通配符范围替换该 IP 地址。 在客户端中,执行以下步骤:
运行以下命令指定要使用的
kubeconfig:export KUBECONFIG=~/custom-kubeconfigs/kubeconfig
$ export KUBECONFIG=~/custom-kubeconfigs/kubeconfig1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用复制的
kubeconfig文件的位置作为路径。
使用以下命令检查是否应用了证书:
oc --certificate-authority ~/certs/ca.ca get node
$ oc --certificate-authority ~/certs/ca.ca get nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
oc get node NAME STATUS ROLES AGE VERSION dhcp-1-235-195.arm.example.com Ready control-plane,master,worker 76m v1.29.2
oc get node NAME STATUS ROLES AGE VERSION dhcp-1-235-195.arm.example.com Ready control-plane,master,worker 76m v1.29.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将新 CA 文件添加到 $KUBECONFIG 环境变量中:
oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crt
$ oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证新的
kubeconfig文件是否包含新的 CA:oc config view --flatten
$ oc config view --flattenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 外部生成的
kubeconfig文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 外部生成的
kubeconfig文件中不存在certificate-authority-data部分。它通过之前使用的oc config set命令添加。
运行以下命令,验证自定义 API 服务器证书颁发机构的
主题和签发者:curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -v$ curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要将生成的
kubeconfig文件中的certificate-authority-data替换为新的rootCA,或者将certificate-authority-data添加到操作系统的信任根中。不要同时使用这两种方法。在操作系统的信任根中配置额外的 CA。例如,在客户端系统上的 RHEL 客户端信任存储中。详情请查看 系统范围的信任存储。
- 建议使用包含 CA 的配置更新证书捆绑包。
-
如果您不想配置证书捆绑包,也可以使用
oc login localhost:8443 --certificate-authority=/path/to/cert.crt命令,但这不是首选的方法。
3.3. 自定义证书保留名称值 复制链接链接已复制到粘贴板!
以下证书问题会导致 MicroShift 动态忽略证书并记录错误:
- 磁盘中不存在证书文件或不可读。
- 证书不可解析。
-
证书会覆盖
SubjectAlternativeNames(SAN)字段中的内部证书 IPAddress/DNSNames。在配置 SAN 时不要使用保留的名称。
| 地址 | 类型 | 注释 |
|---|---|---|
|
| DNS | |
|
| IP 地址 | |
|
| IP 地址 | 集群网络 |
|
| IP 地址 | 服务网络 |
| 169.254.169.2/29 | IP 地址 | br-ex Network |
|
| DNS | |
|
| DNS | |
|
| DNS |
3.4. 自定义证书故障排除 复制链接链接已复制到粘贴板!
要排除自定义证书的实施,您可以执行以下步骤。
流程
在 MicroShift 中,确保证书由
kube-apiserver提供,并通过运行以下命令来验证证书路径是否已附加到 the-tls-sni-cert-keyFLAG 中:journalctl -u microshift -b0 | grep tls-sni-cert-key
$ journalctl -u microshift -b0 | grep tls-sni-cert-keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Jan 24 14:53:00 localhost.localdomain microshift[45313]: kube-apiserver I0124 14:53:00.649099 45313 flags.go:64] FLAG: --tls-sni-cert-key="[/home/eslutsky/dev/certs/server.crt,/home/eslutsky/dev/certs/server.key;/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.key;/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.key;/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.key
Jan 24 14:53:00 localhost.localdomain microshift[45313]: kube-apiserver I0124 14:53:00.649099 45313 flags.go:64] FLAG: --tls-sni-cert-key="[/home/eslutsky/dev/certs/server.crt,/home/eslutsky/dev/certs/server.key;/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.key;/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.key;/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在客户端中,运行以下命令来确保
kube-apiserver提供正确的证书:openssl s_client -connect <SNI_ADDRESS>:6443 -showcerts | openssl x509 -text -noout -in - | grep -C 1 "Alternative\|CN"
$ openssl s_client -connect <SNI_ADDRESS>:6443 -showcerts | openssl x509 -text -noout -in - | grep -C 1 "Alternative\|CN"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 清理和重新创建自定义证书 复制链接链接已复制到粘贴板!
要停止 MicroShift 服务,请清理自定义证书并重新创建自定义证书,请使用以下步骤。
流程
运行以下命令,停止 MicroShift 服务并清理自定义证书:
sudo microshift-cleanup-data --cert
$ sudo microshift-cleanup-data --certCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Stopping MicroShift services Removing MicroShift certificates MicroShift service was stopped Cleanup succeeded
Stopping MicroShift services Removing MicroShift certificates MicroShift service was stopped Cleanup succeededCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令重启 MicroShift 服务以重新创建自定义证书:
sudo systemctl start microshift
$ sudo systemctl start microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 其他资源 复制链接链接已复制到粘贴板!
第 4 章 检查 greenboot 脚本状态 复制链接链接已复制到粘贴板!
要使用 kustomize 清单以外的工具通过 MicroShift API 部署应用程序或进行其他更改,您必须等待 greenboot 健康检查完成。这可确保,如果 greenboot 将 rpm-ostree 系统回滚回较早的状态,您的更改不会丢失。
greenboot-healthcheck 服务运行一次,然后退出。在 greenboot 退出并且系统处于健康状态后,您可以继续配置更改和部署。
4.1. 检查 greenboot 健康检查的状态 复制链接链接已复制到粘贴板!
在对系统进行更改或故障排除期间,检查 greenboot 健康检查的状态。您可以使用以下任一命令来帮助确保 greenboot 脚本已完成运行。
流程
要查看健康检查状态的报告,请使用以下命令:
systemctl show --property=SubState --value greenboot-healthcheck.service
$ systemctl show --property=SubState --value greenboot-healthcheck.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
start的输出表示 greenboot 检查仍在运行。 -
退出的输出表示检查已通过,reenboot 已退出。当系统处于健康状态时,greenboot 在green.d目录中运行脚本。 -
失败的输出表示检查尚未通过。greenboot 在系统处于此状态时在red.d目录中运行脚本,并可能重启系统。
-
要查看一个报告显示服务的数字退出代码,其中
0表示成功,非零值表示发生了失败,请使用以下命令:systemctl show --property=ExecMainStatus --value greenboot-healthcheck.service
$ systemctl show --property=ExecMainStatus --value greenboot-healthcheck.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看显示引导状态的报告,如
Boot Status 为 GREEN - Health Check SUCCESS,请使用以下命令:cat /run/motd.d/boot-status
$ cat /run/motd.d/boot-statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 5 章 配置审计日志记录策略 复制链接链接已复制到粘贴板!
您可以使用配置值控制 MicroShift 审计日志文件轮转和保留。
5.1. 关于设置审计日志文件的限制 复制链接链接已复制到粘贴板!
使用配置值控制 MicroShift 审计日志文件的轮转和保留有助于防止超过边缘设备的有限存储容量。在这样的设备中,日志记录数据积累可能会限制主机系统或集群工作负载,从而导致设备停止工作。设置审计日志策略有助于确保关键处理空间持续可用。
您设置为限制 MicroShift 审计日志的值可让您强制实施审计日志备份的大小、数字和年龄限制。字段值相互独立处理,无需优先处理。
您可以组合设置字段,为保留的日志定义最大存储限制。例如:
-
将
maxFileSize和maxFiles设置为创建一个日志存储上限。 -
设置
maxFileAge值,以自动删除文件名中时间戳旧的文件,而不考虑maxFiles值。
5.1.1. 默认审计日志值 复制链接链接已复制到粘贴板!
MicroShift 包括以下默认审计日志轮转值:
| 审计日志参数 | 默认设置 | 定义 |
|---|---|---|
|
|
| 在自动删除前保留日志文件的时长。默认值表示,日志文件永远不会根据年龄删除。可以配置这个值。 |
|
|
| 保留的日志文件总数。默认情况下,MicroShift 保留 10 个日志文件。创建过量文件时,会删除最旧的文件。可以配置这个值。 |
|
|
|
默认情况下,当 |
|
|
|
|
如果文件有 10 个或更少,则审计日志保留的最大默认存储使用量为 2000Mb。
如果没有为字段指定值,则使用默认值。如果删除了之前设置的字段值,则会在下一个 MicroShift 服务重启后恢复默认值。
您必须在 Red Hat Enterprise Linux (RHEL)中为应用程序 Pod 生成的日志配置审计日志保留和轮转。这些日志打印到控制台并被保存。确保为 RHEL /var/log/audit/audit.log 文件配置了日志首选项,以维护 MicroShift 集群健康状况。
其他资源
- 为安全环境配置 auditd
- 了解审计日志文件
- 如何使用 logrotate 工具轮转日志文件 (Solutions,自 2024 年 8 月 7 日)
5.2. 关于审计日志策略配置集 复制链接链接已复制到粘贴板!
审计日志配置集定义如何记录发送到 OpenShift API 服务器和 Kubernetes API 服务器的请求。
MicroShift 支持以下预定义的审计策略配置集:
| profile | 描述 |
|---|---|
|
| 仅记录读取和写入请求的日志元数据 ;除了 OAuth 访问令牌请求外,不记录请求正文。这是默认策略。 |
|
|
除了记录所有请求的元数据外,还会记录对 API 服务器的写入请求( |
|
|
除了记录所有请求的元数据外,对 API 服务器的每个读写请求( |
|
| 没有记录请求,包括 OAuth 访问令牌请求和 OAuth 授权令牌请求。 警告
除非完全了解在对问题进行故障排除时无法记录数据的风险,否则不要使用 |
-
敏感资源(如
Secret、Route和OAuthClient对象)仅记录在元数据级别上。
默认情况下,MicroShift 使用 Default 审计日志配置集。您可以使用另一个审计策略配置集来记录请求的具体数据,但注意这会消耗更多资源(如 CPU、内存和 I/O)。
5.3. 配置审计日志值 复制链接链接已复制到粘贴板!
您可以使用 MicroShift 服务配置文件配置审计日志设置。
流程
-
在
/etc/microshift/目录中生成提供的config.yaml.default文件的副本,将它重命名为config.yaml。在/etc/microshift/目录中保留您创建的新的 MicroShiftconfig.yaml。每当 MicroShift 服务启动时,会读取新的config.yaml。创建后,config.yaml文件优先于内置设置。 将 YAML 的
auditLog部分中的默认值替换为您所需的有效值。默认
auditLog配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定日志文件要保留的最大时间(以天为单位)。超过这个限制的文件会被删除。在本例中,日志文件超过 7 天后,将被删除。无论实时日志是否达到
maxFileSize字段中指定的最大文件大小,都会删除这些文件。文件年龄由使用轮转日志文件名称写入的时间戳决定,例如audit-2024-05-16T17-03-59.994.log。当值为0时,会禁用限制。 - 2
- 最大审计日志文件大小(以 MB 为单位)。在本例中,文件会在实时日志达到 200 MB 限制时进行轮转。当值设为
0时,会禁用限制。 - 3
- 保留的最大轮转审计日志文件数。达到限制后,日志文件将从最旧的到最新的顺序删除。在本例中,除了当前活跃日志外,值
1会导致只保留 1 个 sizemaxFileSize的文件。当值设为0时,会禁用限制。 - 4
- 仅记录读取和写入请求的日志元数据 ;除了 OAuth 访问令牌请求外,不记录请求正文。如果没有指定此字段,则使用
Default配置集。
可选: 要为日志指定新目录,您可以停止 MicroShift,然后将
/var/log/kube-apiserver目录移到所需的位置:运行以下命令来停止 MicroShift:
sudo systemctl stop microshift
$ sudo systemctl stop microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将
/var/log/kube-apiserver目录移到所需位置:sudo mv /var/log/kube-apiserver <~/kube-apiserver>
$ sudo mv /var/log/kube-apiserver <~/kube-apiserver>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将 < ~/kube-apiserver > 替换为您要使用的目录的路径。
如果为日志指定新目录,请运行以下命令到位于
/var/log/kube-apiserver的自定义目录:sudo ln -s <~/kube-apiserver> /var/log/kube-apiserver
$ sudo ln -s <~/kube-apiserver> /var/log/kube-apiserver1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将 < ~/kube-apiserver > 替换为您要使用的目录的路径。这启用了 sos 报告中的日志集合。
如果要在运行的实例上配置审计日志策略,请输入以下命令重启 MicroShift:
sudo systemctl restart microsohift
$ sudo systemctl restart microsohiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 审计日志配置故障排除 复制链接链接已复制到粘贴板!
使用以下步骤对自定义审计日志设置和文件位置进行故障排除。
流程
运行以下命令检查配置的当前值:
sudo microshift show-config --mode effective
$ sudo microshift show-config --mode effectiveCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
auditLog: maxFileSize: 200 maxFiles: 1 maxFileAge: 7 profile: AllRequestBodiesauditLog: maxFileSize: 200 maxFiles: 1 maxFileAge: 7 profile: AllRequestBodiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查
audit.log文件权限:sudo ls -ltrh /var/log/kube-apiserver/audit.log
$ sudo ls -ltrh /var/log/kube-apiserver/audit.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
-rw-------. 1 root root 46M Mar 12 09:52 /var/log/kube-apiserver/audit.log
-rw-------. 1 root root 46M Mar 12 09:52 /var/log/kube-apiserver/audit.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,列出当前日志目录的内容:
sudo ls -ltrh /var/log/kube-apiserver/
$ sudo ls -ltrh /var/log/kube-apiserver/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
total 6.0M -rw-------. 1 root root 2.0M Mar 12 10:56 audit-2024-03-12T14-56-16.267.log -rw-------. 1 root root 2.0M Mar 12 10:56 audit-2024-03-12T14-56-49.444.log -rw-------. 1 root root 962K Mar 12 10:57 audit.log
total 6.0M -rw-------. 1 root root 2.0M Mar 12 10:56 audit-2024-03-12T14-56-16.267.log -rw-------. 1 root root 2.0M Mar 12 10:56 audit-2024-03-12T14-56-49.444.log -rw-------. 1 root root 962K Mar 12 10:57 audit.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow