Fedora CoreOS常见问题解答

如果您有这里提到的以外的其他问题或想要讨论 此外,请加入我们的Liber.Chat IRC频道, #fedora-coreOS ,或在我们的 讨论板 。 请回到这里,因为可能会有一些问题和答案 更新了。

什么是Fedora CoreOS?

Fedora CoreOS是一款自动更新、最小、单片 以容器为中心的操作系统,专为集群设计,但也 可独立操作,为Kubernetes优化,但没有它也很棒。 它的目标是结合CoreOS容器Linux和Fedora的优点 原子主机,集成Container Linux的Ignition等技术 使用Project IAEA提供的rpm-ostree和SELinux强化功能。它的目标是 提供运行集装箱化工作负载的最佳容器主机 安全且规模化。

Fedora CoreOS与红帽CoreOS有何关联?

Fedora CoreOS是一个免费可用的社区发行版,它是 红帽CoreOS的上游基础。当Fedora CoreOS拥抱一个 各种集装箱化用例,RedHat CoreOS提供了 针对OpenShift的重点操作系统,发布并同步进行生命周期 在站台上。

Fedora CoreOS会取代Container Linux吗?CL会怎么样?

Fedora CoreOS是CoreOS容器Linux的正式继任者,但它 不是一个临时的替代品。CoreOS容器Linux将达到其 生命的终结 2020年5月26日,将不再 在该日期之后接收更新。有关从Container Linux迁移的说明 要访问Fedora CoreOS,请参阅 迁移指南 。

Fedora CoreOS会取代Fedora原子宿主吗?Fedora原子主机和CentOS原子主机会发生什么?

Fedora CoreOS是Fedora原子主机的官方继任者。这个 Fedora原子主机的最后一个版本是版本29,现在已经达到 生命的终结。

CentOS原子主机将继续生产RHEL的下游重建 原子宿主,并将与生命的尽头对齐。The Fedora CoreOS 该项目将成为社区发行版的结合点。 鼓励用户将来搬到那里去。

原子计划会发生什么?

原子项目是一个伞形项目,由两种风格组成 原子主机(Fedora和CentOS)以及各种其他 集装箱相关项目。项目原子作为项目名称将是 2018年底日落,个人更加关注其 像Buildah和Cockbit这样的成功项目。这将合并 使用Fedora和 允许与其他社区支持的人员进行更清晰的沟通 项目,特别是被广泛采用的项目 #nobigfate守护进程 的方法 楼房 以及 多功能图形用户界面服务器管理器 座舱 。

Fedora CoreOS周围有哪些沟通渠道?

我们在Fedora CoreOS周围有以下新的沟通渠道:

每周都会举行一次社区会议。请参阅 Fedora CoreOS Fedocal 获取最新信息。

如果您认为您发现了Fedora CoreOS的问题,请在我们的 问题跟踪器 。

技术常见问题

我在哪里可以下载费多拉CoreOS?

Fedora CoreOS文物可在以下位置获得 getfedora.org 。

Fedora CoreOS是否接受Container Linux更新理念?

是的,Fedora CoreOS带有自动 更新和定期发布。提供多个更新通道 迎合不同用户的需求。它引入了一个新的节点-更新 基于rpm-ostree技术的服务,其服务器组件 可以选择自行托管。阻止从的更新的故障 引导将自动恢复。

如何配置Fedora CoreOS节点?我可以重复使用现有的云初始化配置吗?

Fedora CoreOS配备了Ignition装置。然而,现有的 Ignition配置需要更改,因为操作系统配置 将不同于Container Linux。现有的云初始化 配置不受支持,需要迁移到其 Ignition当量。

哪些数据会在升级和重新启动过程中持续存在?

这些目录 /etc 和 /var 以读写方式挂载,从而允许用户 写入和修改文件。

该目录 /etc 可以通过部署进行更改,但不会覆盖用户 做了一些改变。下的内容 /var 未被rpm-ostree触及时 应用升级或回滚。有关更多信息,请参阅 已装载的文件系统 一节。

如何从Container Linux迁移到Fedora CoreOS?

迁移可以通过将计算机重新配置为 软呢帽CoreOS.有关从Container Linux迁移的说明 要访问Fedora CoreOS,请参阅 迁移指南 。

如何从Fedora原子主机迁移到Fedora CoreOS?

与Container Linux一样,最佳实践是重新配置节点,因为 到云-至少初始化/Ignition过渡。由于Fedora CoreOS使用 RPM-Ostree技术,可能会从Fedora重新基地 原子主机到Fedora CoreOS,但不建议这样做。它是 最好获得使用Ignition部署系统的经验,因此 如果需要,可以很容易地重新配置它们。有关迁移的说明 从原子主机到Fedora CoreOS,请参阅 迁移指南 。

Fedora CoreOS上提供了哪些容器运行时?

Fedora CoreOS默认包含docker和podman。 根据社区的参与度和支持,这份清单可能 随着时间的推移而改变。

我可以在fedora CoreOS上运行kubernetes吗?

是。然而,我们设想Fedora CoreOS不包括特定的 默认情况下,容器协调器(或Kubernetes的版本)-就像 容器Linux和原子主机。我们将与上游合作 Kubernetes关于工具(例如kubeadm)和最佳实践的社区 在Fedora CoreOS上安装kubernetes。

如何在Fedora CoreOS上运行自定义应用程序?

在Fedora CoreOS上,容器是安装和配置 基本操作系统不提供的软件。包装分层 Rpm-ostree提供的机制将继续存在,用于 调试一台Fedora CoreOS机器,但我们强烈反对使用它。 有关这方面的更多信息,请参阅 文件 。

我首选的故障排除工具在哪里?

FCOS映像在设计上保持最小。并非每个故障排除工具都是 默认情况下包括在内。相反,建议您使用 toolbox 实用程序。

我如何协调群集范围的操作系统更新?锁匠或容器Linux更新操作员是否可用于Fedora CoreOS?

这个 etcd-lock 要素来源 锁匠 有 被直接移植到津卡蒂,作为 基于锁的更新策略 。 它还被扩展为支持多个后端,不再是 仅限于etcd2。

的能力 容器Linux更新运算符(CLUO) 已嵌入到 机器配置操作员(MCO) , 它是OKD的核心组件。 MCO还包括机器配置更改的对账。

如何将Fedora CoreOS上传到私有AWS EC2区域?

Fedora CoreOS目前仅上传到标准的AWS区域。适用于地区 在GovCloud和AWS China等其他AWS分区中,您必须上传镜像 你自己。

请注意,FedoraBIOS使用统一的CoreOS/UEFI分区布局。因此,它 不兼容 aws ec2 import-image API(有关详细信息,请参见 看见 相关讨论 )。相反, 您必须使用 aws ec2 import-snapshot 结合 aws ec2 register-image 。

要了解有关这些API的更多信息,请参阅的AWS文档 导入快照 和 创建EBS支持的AMI 。

我可以同时通过码头和泊车人运行集装箱吗?

不是的。通过以下方式运行容器 docker 和 podman 同时也会导致 问题和意外行为。我们强烈建议不要尝试使用它们 两者同时存在。

值得注意的是,在Fedora CoreOS中,我们有 docker.service 默认情况下禁用,但如果有任何通信,则很容易启动 与 /var/run/docker.sock 因为 docker.socket 通过以下方式启用 默认设置。这意味着,如果用户运行任何 docker 命令(通过 sudo docker ),则该守护进程将被激活。我们这样做是为了让 对于Container Linux的用户来说,过渡更容易。

在……里面 CoreOS/Fedora-CoreOS-追踪器#408 有人指出,由于套接字激活,用户是 使用 podman 因为集装箱可能会在无意中启动码头 守护神。这可能会削弱系统的安全性,因为 两个容器运行时与系统上的防火墙的交互。 为了防止犯此错误,您可以禁用 docker 完全通过 遮盖住 docker.service SYSTEM D单位。

禁用docker.service的Butane配置示例
variant: fcos
version: 1.4.0
systemd:
  units:
    - name: docker.service
      mask: true

FedoraBIOSx86_64磁盘映像混合CoreOS+uefi可以启动吗?

我们提供的x86_64映像可用于BIOS(传统)引导或UEFI引导。它们包含一个混合的BIOS/UEFI分区设置,允许它们用于任何一个。唯一的例外是 metal4k 4K本机映像,面向具有4K扇区的磁盘和 没有BIOS启动分区 因为4k本机磁盘 仅UEFI支持 。

Ignition和Butane构型有什么不同?

Ignition配置是一个低级接口,用于定义实例的一整套定制。 它主要是指一个机器友好的界面,内容编码为JSON,并通过JSON模式定义固定的结构。 此JSON配置在第一次引导时由每个FCOS实例处理。

存在许多可以从它们自己的特定输入格式开始产生Ignition配置的高级工具, 比如 terraform , matchbox , openshift-installer 和Butane。

Butane就是这样一种高级工具。 它主要是一个人性化的界面,因此定义了它自己更丰富的配置条目,并使用YAML文档作为输入。 FCOS实例从不直接处理此YAML配置(只处理生成的Ignition配置)。

尽管Ignition配置和Butane配置相似,但它们具有不同的结构;因此,在它们之间进行转换不仅是直接从YAML到JSON的转换,而且还涉及到额外的逻辑。 Butane公开了Ignition中不存在的几个定制帮助器(例如,分发特定条目和通用抽象),并使格式不可互换。 此外,不同的格式(Butane的YAML、Ignition的JSON)有助于避免错误地混淆输入。

版本号的格式是什么?

中详细介绍了这一点 设计文档 。

摘要是Fedora CoreOS使用的格式 X.Y.Z.A

  • X 是Fedora的主要版本(即 32 )

  • Y 是包集从Fedora创建快照的日期戳(即 20200715 )

  • Z 是官方版本使用的代码号。

    • 1 对于 next 溪流

    • 2 对于 testing 溪流

    • 3 对于 stable 溪流

  • A 是一个修订版本号,对于每个新版本都会递增 X.Y.Z 参数

版本编号方案可能会更改,机器不会对其进行解析。

为什么dnsmasq.service system d单元被屏蔽?

我们发现dnsmasq二进制文件可以用于多个主机 应用程序,包括Podman和NetworkManager。为此,我们 将dnsmasq包包含在基本OSTree层中,但我们不鼓励 通过使用掩码在主机中使用dnsmasq.service systemctl mask dnsmasq.service 。

“为什么要屏蔽该服务?”

Dnsmasq对于为外部客户端运行DHCP/dns/tftp服务器很有用 (例如,不是主机本地的),但这是我们更喜欢的用户 放在容器里做。将服务放在容器中可以隔离 托管服务因主机层更改而中断。为 例如,如果NetworkManager和Podman停止使用dnsmasq,我们将 将其从主机上移除,您所依赖的服务将停止 工作。

“但是,我真的很想用它!”

我们不推荐,但如果你真的想用它,你可以 取消屏蔽并启用它:

用于取消屏蔽dnsmasq.service的Butane配置示例
variant: fcos
version: 1.4.0
systemd:
  units:
    - name: dnsmasq.service
      mask: false
      enabled: true

有关更多信息,请参见 跟踪器问题的讨论 。

为什么SSH在升级到Fedora 33后停止工作?

在Fedora 33中,有一个变化 实施更强的加密默认设置 。 其中的一部分包括参加 关于OpenSSH的建议 上游 并禁止使用 ssh-rsa 公钥签名算法。

如果使用RSA密钥,您可能会遇到问题:

  • 使用旧版本的 SSH 客户端

  • 使用不支持使用RSA SHA2公钥签名的工具/软件库

例如,GO有一个 未解决的问题 在其SSH实现中解决了这一问题,但尚未解决。 FCOS社区在 我们的构建工具以及更高级别的项目:

如果您遇到此问题并需要解决此问题,您可以 有几个选项:

  • 切换到较新的非RSA密钥类型。

  • 为您的计算机提供重新启用不安全密钥签名的配置:

重新启用SSH RSA SHA1密钥签名的Butane配置示例
variant: fcos
version: 1.4.0
storage:
  files:
    - path: /etc/ssh/sshd_config.d/10-insecure-rsa-keysig.conf
      mode: 0600
      contents:
        inline: |
          PubkeyAcceptedKeyTypes=+ssh-rsa

如果我修改了本地策略,为什么在更新后会收到SELinux拒绝?

目前,OSTree和SELinux工具有点冲突。如果你有 永久应用本地策略修改,然后更新策略 由操作系统提供的服务将不再适用;您的策略保持冻结状态。 这意味着启用新功能所需的任何策略“修复”都将 而不是申请。看见 CoreOS/Fedora-CoreOS-追踪器#701 了解更多详细信息。

这意味着您可能会看到如下所示的否认,这可能会拿下关键部分 像in这样的系统 CoreOS/Fedora-CoreOS-追踪器#700 :

SELinux拒绝示例
systemd-resolved[755]: Failed to symlink /run/systemd/resolve/stub-resolv.conf: Permission denied
audit[755]: AVC avc:  denied  { create } for  pid=755 comm="systemd-resolve" name=".#stub-resolv.confc418434d59d7d93a" scontext=system_u:system_r:systemd_resolved_t:s0 tcontext=system_u:object_r:systemd_resolved_var_run_t:s0 tclass=lnk_file permissive=0

要查看您的系统当前是否修改了本地策略,您可以 跑 ostree admin config-diff 。以下系统已修改 政策:

使用修改后的SELinux策略的示例系统
$ sudo ostree admin config-diff | grep selinux/targeted/policy
M    selinux/targeted/policy/policy.32

要解决此不兼容性问题,请尝试应用策略 动态修改。例如,对于SELinux布尔值,您可以使用 以下是每次引导时执行的系统ID单元:

动态应用SELinux Boolean的Butane配置示例
variant: fcos
version: 1.4.0
systemd:
  units:
    - name: setsebool.service
      enabled: true
      contents: |
        [Service]
        Type=oneshot
        ExecStart=setsebool container_manage_cgroup true
        RemainAfterExit=yes
        [Install]
        WantedBy=multi-user.target

如果系统的基本功能因以下原因而停止工作 SELinux拒绝检查您的系统当前是否具有本地策略 修改。你可以去查一下 ostree admin config-diff :

使用修改后的SELinux策略的示例系统
$ sudo ostree admin config-diff | grep selinux/targeted/policy
M    selinux/targeted/policy/policy.32

如果您的系统处于此状态,您有两种选择:

  • 从最新的图像构件开始重新部署。

    • 这意味着您可以从最新的政策开始。

  • 按照中的解决方法操作 CoreOS/Fedora-CoreOS-追踪器#701 以恢复基本策略。

为什么屏蔽了system d-repart.service system d单元?

系统-重新部件 是一个用于增长分区并将其添加到分区表中的工具。在Fedora CoreOS上,我们 仅支持使用Ignition创建分区、文件系统和挂载点, 因此,默认情况下,系统重部件被屏蔽。

Ignition在initramf中第一次启动时运行,并知道fedora CoreOS。 特定的磁盘布局。它还能够重新配置根文件系统 (例如,从XFS到ext4)、设置Luk等。请参阅 配置存储 请参见第页的示例。

请参阅 为什么dnsmasq.service系统d单元被屏蔽 输入示例配置以取消此设备的掩码。