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

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

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

值得注意的是,在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配置的高级工具, 比如 terraformmatchboxopenshift-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单元被屏蔽 输入示例配置以取消此设备的掩码。