配置
第 1 章 配置工具的工作方式 复制链接链接已复制到粘贴板!
通过一个 YAML 文件,可根据您的偏好、设置和参数自定义 MicroShift 实例。
如果要使用 kustomize
清单以外的工具通过 MicroShift API 进行配置更改或部署应用程序,您必须等待 greenboot 健康检查完成。这可确保,如果 greenboot 将 rpm-ostree
系统回滚回较早的状态,您的更改不会丢失。
1.1. 默认设置 复制链接链接已复制到粘贴板!
如果没有创建 config.yaml
文件,则使用默认值。以下示例显示了默认配置设置。
要查看默认值,请运行以下命令:
microshift show-config
$ microshift show-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 格式的默认值示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. 使用 YAML 配置文件 复制链接链接已复制到粘贴板!
在启动时,MicroShift 会在系统范围的 /etc/microshift/
目录中搜索名为 config.yaml
的配置文件。要使用自定义配置,您必须创建配置文件并指定在启动 MicroShift 前覆盖默认值的设置。
1.2.1. 自定义设置 复制链接链接已复制到粘贴板!
要创建自定义配置,您必须在 /etc/microshift/
目录中创建 config.yaml
文件,然后在启动或重启 MicroShift 前更改要覆盖默认值的设置。
在更改任何配置设置后,重新启动 MicroShift 使其生效。config.yaml
文件仅在 MicroShift 启动时读取。
1.2.2. 配置公告地址网络标记 复制链接链接已复制到粘贴板!
apiserver.advertiseAddress
标志指定要将 API 服务器公告给集群成员的 IP 地址。集群必须可以访问这个地址。您可以在此处设置自定义 IP 地址,但还必须将 IP 地址添加到主机接口。自定义此参数会抢占 MicroShift,将默认 IP 地址添加到 br-ex
网络接口。
如果自定义 advertiseAddress
IP 地址,请通过将 IP 地址添加到主机接口来确保集群可在 MicroShift 启动时被集群访问。
如果未设置,则默认值会在服务网络后设置为下一个即时子网。例如,当服务网络为 10.43.0.0/16
时,广告地址
被设置为 10.44.0.0/32
。
1.2.3. 为 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
二进制文件。
流程
可选:如果您的 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/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令更新
~/.kube/config
文件的权限:chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入以下命令验证 MicroShift 是否正在运行:
oc get all -A
$ oc get all -A
Copy 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 地址或主机名的集群。为 apiServer.subjectAltNames
参数中的每个条目生成额外的 kubeconfig
文件。您可以在 IP 连接期间从主机复制 kubeconfig
文件,然后使用它们从其他工作站访问 API 服务器。
2.4. 为远程访问生成额外的 kubeconfig 文件 复制链接链接已复制到粘贴板!
如果需要更多主机名或 IP 地址超过默认的远程访问文件提供,您可以生成额外的 kubeconfig
文件。
您必须重启 MicroShift 才能实现配置更改。
先决条件
-
您已为 MicroShift 创建了一个
config.yaml
。
流程
可选: 您可以显示
config.yaml
的内容。运行以下命令:cat /etc/microshift/config.yaml
$ cat /etc/microshift/config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 您可以显示远程访问
kubeconfig
文件的内容。运行以下命令:cat /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig
$ cat /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig
Copy 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 microshift
Copy 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/kubeconfig
Copy 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:6443
clusters: - cluster: certificate-authority-data: <base64 CA> server: https://alt-name-1:6443
1 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 --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以
user@microshift
的身份,输入以下命令验证 MicroShift 是否正在运行:oc get all -A
[user@microshift]$ oc get all -A
Copy 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
的身份,运行以下命令,创建~/.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/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要为此步骤生成 kubeconfig
文件,请参阅附加资源部分中的"生成额外 kubeconfig 文件以进行远程访问"。
以
user@workstation
的身份,运行以下命令来更新~/.kube/config
文件的权限:chmod go-r ~/.kube/config
$ chmod go-r ~/.kube/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以
user@workstation
的身份,输入以下命令验证 MicroShift 是否正在运行:oc get all -A
[user@workstation]$ oc get all -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 检查 greenboot 脚本状态 复制链接链接已复制到粘贴板!
要使用 kustomize
清单以外的工具通过 MicroShift API 部署应用程序或进行其他更改,您必须等待 greenboot 健康检查完成。这可确保,如果 greenboot 将 rpm-ostree
系统回滚回较早的状态,您的更改不会丢失。
greenboot-healthcheck
服务会运行一个时间,然后退出。在 greenboot 退出并且系统处于健康状态后,您可以继续配置更改和部署。
3.1. 检查 greenboot 健康检查的状态 复制链接链接已复制到粘贴板!
在对系统进行更改或故障排除期间,检查 greenboot 健康检查的状态。您可以使用以下任一命令来帮助确保 greenboot 脚本已完成运行。
流程
要查看健康检查状态的报告,请使用以下命令:
systemctl show --property=SubState --value greenboot-healthcheck.service
$ systemctl show --property=SubState --value greenboot-healthcheck.service
Copy 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.service
Copy 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-status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow