配置


Red Hat build of MicroShift 4.13

配置 MicroShift

Red Hat OpenShift Documentation Team

摘要

本文档提供有关配置 MicroShift 的说明。

第 1 章 配置工具的工作方式

通过一个 YAML 文件,可根据您的偏好、设置和参数自定义红帽构建的 MicroShift 实例。

1.1. 使用 YAML 配置文件

红帽构建的 MicroShift 在特定于用户的目录 ~/.microshift/config.yaml 中搜索配置文件,然后搜索系统范围的 /etc/microshift/config.yaml 目录。您必须创建配置文件并指定任何应在启动红帽构建的 MicroShift 前覆盖默认值的设置。

1.1.1. 默认设置

如果没有创建 config.yaml 文件,则使用默认值。以下示例配置包含默认设置。您必须在启动红帽构建的 MicroShift 前更改任何应覆盖默认值的设置。

默认 YAML 文件示例

dns:
  baseDomain: microshift.example.com 
1

network:
  clusterNetwork:
    - cidr: 10.42.0.0/16 
2

  serviceNetwork:
    - 10.43.0.0/16 
3

  serviceNodePortRange: 30000-32767 
4

node:
  hostnameOverride: "" 
5

  nodeIP: "" 
6

apiServer:
  subjectAltNames: [] 
7

debugging:
  logLevel: "Normal" 
8
Copy to Clipboard Toggle word wrap

1
集群的基域。所有管理的 DNS 记录都将是这个基础的子域。
2
从中分配 Pod IP 地址的 IP 地址块。
3
Kubernetes 服务的虚拟 IP 地址块。
4
端口范围允许用于 NodePort 类型的 Kubernetes 服务。
5
节点的名称。默认值为 hostname。
6
节点的 IP 地址。默认值是默认路由的 IP 地址。
7
API 服务器证书的主题备用名称。
8
日志详细程度。此字段的有效值为 Normal,Debug,Trace, 或 TraceAll
重要

在更改任何配置设置后,重新启动红帽构建的 MicroShift 使其生效。红帽构建的 MicroShift 仅在启动时读取配置文件。

1.2. 为 NodePort 服务扩展端口范围

serviceNodePortRange 设置扩展可用于 NodePort 服务的端口范围。当需要公开 30000-32767 范围下的特定标准端口时,这个选项很有用。例如,如果您的设备需要公开网络上的 1883/tcp MQ 遥测传输(MQTT)端口,因为客户端设备无法使用不同的端口。

重要

NodePort 可以与系统端口重叠,从而导致系统失败或红帽构建的 MicroShift。

配置 NodePort 服务范围时请考虑以下几点:

  • 不要在没有明确选择了 nodePort 的情况下创建任何 NodePort 服务。如果没有指定显式 nodePort,则 kube-apiserver 会随机分配端口,且无法预测。
  • 不要为任何系统服务端口、红帽构建的 MicroShift 端口或您在设备 HostNetwork 上公开的其他服务创建任何 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 启动时,都会生成一组 kubeconfig 文件,用于本地和远程访问 API 服务器。这些文件使用预先存在的配置信息在 /var/lib/microshift/resources/kubeadmin/ 目录中生成。

每种访问类型都需要不同的证书颁发机构(CA)签名的身份验证证书。生成多个 kubeconfig 文件符合这一需求。

您可以将适当的 kubeconfig 文件用于每个情况下所需的访问类型,以提供身份验证详情。红帽构建的 MicroShift kubeconfig 文件的内容由默认的内置值或 config.yaml 文件决定。

注意

必须存在 kubeconfig 文件,以便集群可以访问。如果已创建,这些值从内置默认值或 config.yaml 应用。

kubeconfig 文件的内容示例

/var/lib/microshift/resources/kubeadmin/
├── kubeconfig 
1

├── alt-name-1 
2

│   └── kubeconfig
├── 1.2.3.4 
3

│   └── kubeconfig
└── microshift-rhel9 
4

    └── kubeconfig
Copy to Clipboard Toggle word wrap

1
本地主机名。主机的主 IP 地址始终是默认值。
2
API 服务器证书的主题备用名称。
3
DNS 名称。
4
红帽构建的 MicroShift 主机名。

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
Copy to Clipboard Toggle word wrap

localhost kubeconfig 文件只能从从同一主机连接到 API 服务器的客户端使用。文件中的证书不适用于远程连接。

2.2.1. 本地访问 MicroShift 集群的红帽构建

使用以下步骤,使用 kubeconfig 文件在本地访问 MicroShift 集群的红帽构建。

先决条件

  • 已安装 oc 二进制文件。

流程

  1. 可选:如果您的 RHEL 机器没有 ~/.kube/ 文件夹,请运行以下命令:

    $ mkdir -p ~/.kube/
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,将生成的本地访问 kubeconfig 文件复制到 ~/.kube/ 目录中:

    $ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,更新 ~/.kube/config 文件的权限:

    $ chmod go-r ~/.kube/config
    Copy to Clipboard Toggle word wrap

验证

  • 输入以下命令验证红帽构建的 MicroShift 是否正在运行:

    $ oc get all -A
    Copy to Clipboard Toggle word wrap

2.3. 远程访问 kubeconfig 文件

当红帽构建的 MicroShift 集群从外部源连接到 API 服务器时,会使用 SAN 字段中所有替代名称的证书进行验证。红帽构建的 MicroShift 使用 主机名 值为外部访问生成默认的 kubeconfig。默认值在默认 kubeconfig 文件的 < node.hostnameOverride><node.nodeIP > 和 api.<dns.baseDomain > 参数值中设置。

/var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig 文件使用机器的 hostnamenode.hostnameOverride(如果设置了这个选项)来访问 API 服务器。kubeconfig 文件的 CA 可以在外部访问时验证证书。

用于远程访问的默认 kubeconfig 文件的内容示例

clusters:
- cluster:
    certificate-authority-data: <base64 CA>
    server: https://microshift-rhel9:6443
Copy to Clipboard Toggle word wrap

2.3.1. 远程访问自定义

可以生成多个远程访问 kubeconfig 文件值来访问具有不同 IP 地址或主机名的集群。为 apiServer.subjectAltNames 参数中的每个条目生成额外的 kubeconfig 文件。您可以在 IP 连接期间从主机复制远程访问 kubeconfig 文件,然后使用它们从其他工作站访问 API 服务器。

2.4. 为远程访问生成额外的 kubeconfig 文件

如果您需要多于默认远程访问文件提供的主机名或 IP 地址,您可以生成额外的 kubeconfig 文件。

重要

您必须重启红帽构建的 MicroShift 才能实现配置更改。

先决条件

  • 您已为 MicroShift 的红帽构建创建了 config.yaml

流程

  1. (可选)您可以通过运行以下命令来显示 config.yaml 的内容:

    $ cat /etc/microshift/config.yaml
    Copy to Clipboard Toggle word wrap
  2. (可选)您可以运行以下命令来显示 remote-access kubeconfig 文件的内容:

    $ cat /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig
    Copy to Clipboard Toggle word wrap
    重要

    其他远程访问 kubeconfig 文件必须包含红帽构建的 MicroShift config.yaml 文件中列出的一个服务器名称。其他 kubeconfig 文件还必须使用相同的 CA 进行验证。

  3. 要为额外的 DNS 名称 SAN 或外部 IP 地址生成额外的 kubeconfig 文件,请将您需要的条目添加到 apiServer.subjectAltNames 字段。在以下示例中,使用的 DNS 名称是 alt-name-1,IP 地址为 1.2.3.4

    带有额外身份验证值的 config.yaml 示例

    dns:
      baseDomain: example.com
    node:
      hostnameOverride: "microshift-rhel9" 
    1
    
      nodeIP: 10.0.0.1
    apiServer:
      subjectAltNames:
      - alt-name-1 
    2
    
      - 1.2.3.4 
    3
    Copy to Clipboard Toggle word wrap

    1
    主机名
    2
    DNS 名称
    3
    IP 地址或范围
  4. 运行以下命令,重启 Red Hat build of MicroShift 以应用配置更改并自动生成 kubeconfig 文件:

    $ sudo systemctl restart microshift
    Copy to Clipboard Toggle word wrap
  5. 要检查其他远程访问 kubeconfig 文件的内容,请将 config.yaml 中列出的名称或 IP 地址插入到 cat 命令中。例如,以下示例命令中使用 alt-name-1

    $ cat /var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfig
    Copy to Clipboard Toggle word wrap
  6. 选择包含您要用于连接集群的 SAN 或 IP 地址的 kubeconfig 文件。在本例中,cluster.server 字段中包含'alt-name-1' 的 kubeconfig 是正确的文件。

    额外 kubeconfig 文件的内容示例

    clusters:
    - cluster:
        certificate-authority-data: <base64 CA>
        server: https://alt-name-1:6443 
    1
    Copy to Clipboard Toggle word wrap

    1
    /var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfig 文件值来自 apiServer.subjectAltNames 配置值。
注意

所有这些参数都作为通用名称(CN)和主题替代名称(SAN)包含在 API 服务器的外部服务证书中。

使用以下步骤打开防火墙,以便远程用户可以访问 MicroShift 集群的红帽构建。必须在 workstation 用户可以访问集群前完成此步骤。

对于此过程,user@microshift 是红帽构建的 MicroShift 主机机器上的用户,它负责设置该机器,使其可以被单独的工作站上的远程用户访问。

先决条件

  • 已安装 oc 二进制文件。
  • 您的帐户具有集群管理特权。

流程

  • 在 MicroShift 主机的红帽构建中以 user@microshift 的身份,运行以下命令来打开 Kubernetes API 服务器的防火墙端口(6443/tcp):

    [user@microshift]$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload
    Copy to Clipboard Toggle word wrap

验证

  • user@microshift 的身份,输入以下命令验证红帽构建的 MicroShift 是否正在运行:

    [user@microshift]$ oc get all -A
    Copy to Clipboard Toggle word wrap

2.4.2. 远程访问 MicroShift 集群的红帽构建

使用以下步骤,使用 kubeconfig 文件从远程工作站访问 MicroShift 集群的红帽构建。

user@workstation login 用于远程访问主机计算机。该流程中的 <user > 值是 user@workstation 登录红帽 MicroShift 主机的红帽构建的用户名称。

先决条件

  • 已安装 oc 二进制文件。
  • @user@microshift 已打开来自本地主机的防火墙。

流程

  1. user@workstation 的身份,如果您的 RHEL 机器没有 ~/.kube/ 文件夹,请运行以下命令来创建:

    [user@workstation]$ mkdir -p ~/.kube/
    Copy to Clipboard Toggle word wrap
  2. user@workstation 的身份,运行以下命令来为红帽构建的 MicroShift 主机的主机名设置变量:

    [user@workstation]$ MICROSHIFT_MACHINE=<name or IP address of Red Hat build of MicroShift machine>
    Copy to Clipboard Toggle word wrap
  3. user@workstation 的身份,运行以下命令,将生成的 kubeconfig 文件(包含您要从运行红帽构建的 MicroShift 的 RHEL 机器连接的主机名或 IP 地址)复制到本地机器:

    [user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
    Copy to Clipboard Toggle word wrap
  4. user@workstation 的身份,运行以下命令来更新 ~/.kube/config 文件的权限:

    $ chmod go-r ~/.kube/config
    Copy to Clipboard Toggle word wrap

验证

  • user@workstation 的身份,输入以下命令验证 MicroShift 的红帽构建是否正在运行:

    [user@workstation]$ oc get all -A
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat