使用KVM / OpenStack安装/运行Fedora CoreOS(FCOS)

Fedora CoreOS(FCOS)是一个最小的操作系统,旨在安全,大规模地运行容器化工作负载。该操作系统的组成部分是出色的CoreOS和Fedora Atomic。具有自动更新功能,该功能不可更改,以使操作系统稳定可靠。使用rpm-ostree会自动更新操作系统,以进行最新的操作系统改进,错误修复和安全更新。

与其他Linux操作系统不同,Fedora CoreOS(FCOS)没有安装配置。所有FCOS系统均以通用磁盘映像开头。对于每种部署机制(云虚拟机,本地虚拟机,裸机),您可以在首次启动时指定配置。 FCOS读取并应用配置文件 点火

如果将Fedora CoreOS安装在裸机上或使用ISO文件作为虚拟机安装,Ignition将在安装过程中插入配置。但是,对于在云环境中进行的部署,Ignition通过云用户数据机制收集配置。

在KVM / OpenStack上运行/安装Fedora CoreOS(FCOS)

本指南描述了如何在OpenStack和KVM虚拟化环境中运行Fedora CoreOS(FCOS)。以下是使用OpenStack / KVM设置不变的Fedora CoreOS基础结构的标准过程。

  1. 你先写 Fedora CoreOS配置 (FCC)–这是一个YAML文件,用于指定计算机的所需配置。
  2. 然后使用 Fedora CoreOS Config Transpiler验证FCC并将其转换为点火配置
  3. 最后一步是引导Fedora CoreOS计算机并生成 点火设定。计算机成功启动后,即可开始配置。

步骤1:下载最新的QCOW2映像

前往 FCOS下载页面 获取适合QEMU的最新图像。

OpenStack的:

wget https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/31.20200113.3.1/x86_64/fedora-coreos-31.20200113.3.1-openstack.x86_64.qcow2.xz -O fedora-coreos-openstack.qcow2.xz
unxz fedora-coreos-openstack.qcow2.xz

QEMU / KVM:

wget https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/31.20200113.3.1/x86_64/fedora-coreos-31.20200113.3.1-qemu.x86_64.qcow2.xz -O fedora-coreos-qemu.qcow2.xz
unxz fedora-coreos-qemu.qcow2.xz

对于Openstack,您需要将Fedora CoreOS映像上传到OpenStack Glance服务。

openstack image create "fcos" 
    --file fedora-coreos-openstack.qcow2 
    --disk-format qcow2 --container-format bare 
    --public

确认图像已上传。

$ openstack image list
+--------------------------------------+-----------------+--------+
| ID                                   | Name            | Status |
+--------------------------------------+-----------------+--------+
| 6576c788-19e1-4de4-bf63-a769763cd00d | fcos            | active |
+--------------------------------------+-----------------+--------+

第2步:创建Fedora CoreOS Config(FCC)

FCC是一个YAML文件,其中包含您的计算机所需的设置。 FCC支持所有点火功能,并且还提供其他语法(“糖”)。这样可以轻松指定常见的配置更改。

这是用于将SSH密钥添加到默认核心用户的基本YAML配置文件。

$ vim fcos.fcc 
variant: fcos
version: 1.0.0
passwd:
  users:
    - name: core
      ssh_authorized_keys:
        - ssh-rsa xx...

其中:

  • 灯芯 FCOS用户名
  • xx … 是公钥的内容

涵盖了FCC的详细信息及其规格 FCOS设置和配置 页面。

步骤3:将FCC转换为点火配置

接下来,使用Fedora CoreOS Config Transpiler验证FCC并将其转换为Ignition配置。

--- Podman ---
$ podman pull quay.io/coreos/fcct:v0.2.0
$ podman run -i --rm quay.io/coreos/fcct:v0.2.0 -pretty -strict  fcos.ign

--- Docker ---
$ docker pull quay.io/coreos/fcct:v0.2.0
$ docker run -i --rm quay.io/coreos/fcct:v0.2.0 -pretty -strict  fcos.ign

交换 fcos.fcc FCC文件名和 fcos.ign 要创建的点火文件的名称。

您可以使用以下方法手动验证点火配置文件:

--- Podman ---
$ podman run --rm -i quay.io/coreos/ignition-validate - < fcos.ign

--- Docker ---
$ docker run --rm -i quay.io/coreos/ignition-validate - < fcos.ign

步骤4:启动Fedora CoreOS计算机

点火文件准备就绪后,您可以通过传递创建的点火配置来创建Fedora CoreOS计算机。

在OpenStack中

OpenStack CLI:配置和使用OpenStack CLI

$ openstack server create 
 --image fcos 
 --key-name  
 --flavor m1.small 
 --security-group    
 --network private  
 --user-data fcos.ign 
 fcos

交流:

  • 上载到OpenStack的SSH密钥的名称。
  • 安全组ID上传到OpenStack

在构建开始时立即输出

+-------------------------------------+---------------------------------------------+
| Field                               | Value                                       |
+-------------------------------------+---------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                      |
| OS-EXT-AZ:availability_zone         |                                             |
| OS-EXT-SRV-ATTR:host                | None                                        |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                        |
| OS-EXT-SRV-ATTR:instance_name       |                                             |
| OS-EXT-STS:power_state              | NOSTATE                                     |
| OS-EXT-STS:task_state               | scheduling                                  |
| OS-EXT-STS:vm_state                 | building                                    |
| OS-SRV-USG:launched_at              | None                                        |
| OS-SRV-USG:terminated_at            | None                                        |
| accessIPv4                          |                                             |
| accessIPv6                          |                                             |
| addresses                           |                                             |
| adminPass                           | ru6YiFeRLWn5                                |
| config_drive                        |                                             |
| created                             | 2020-01-24T19:27:11Z                        |
| flavor                              | m1.small (1)                                |
| hostId                              |                                             |
| id                                  | 6402494f-a2b1-4b6d-b462-7bc54d38d53b        |
| image                               | fcos (6576c788-19e1-4de4-bf63-a769763cd00d) |
| key_name                            | jmutai                                      |
| name                                | fcos                                        |
| progress                            | 0                                           |
| project_id                          | 06bcc3c56ab1489282b65681e782d7f6            |
| properties                          |                                             |
| security_groups                     | name='7fffea2a-b756-473a-a13a-219dd0f1913a' |
| status                              | BUILD                                       |
| updated                             | 2020-01-24T19:27:11Z                        |
| user_id                             | 336acbb7421f47f8be4891eabf0c9cc8            |
| volumes_attached                    |                                             |
+-------------------------------------+---------------------------------------------+

检查虚拟机状态。

$ openstack server list  --name fcos
+--------------------------------------+------+--------+---------------------+-------+----------+
| ID                                   | Name | Status | Networks            | Image | Flavor   |
+--------------------------------------+------+--------+---------------------+-------+----------+
| 6402494f-a2b1-4b6d-b462-7bc54d38d53b | fcos | ACTIVE | private=10.10.1.126 | fcos  | m1.small |
+--------------------------------------+------+--------+---------------------+-------+----------+

让我们看看是否可以ping通VM。

$ ping -c 3 10.10.1.126
PING 10.10.1.126 (10.10.1.126) 56(84) bytes of data.
64 bytes from 10.10.1.126: icmp_seq=1 ttl=64 time=0.320 ms
64 bytes from 10.10.1.126: icmp_seq=2 ttl=64 time=0.297 ms
64 bytes from 10.10.1.126: icmp_seq=3 ttl=64 time=0.373 ms

--- 10.10.1.126 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.297/0.330/0.373/0.031 ms

我可以SSH到实例吗?

$ ssh [email protected]
Warning: Permanently added '10.10.1.126' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/centos/.ssh/id_rsa': 
Fedora CoreOS 31.20200113.3.1
Tracker: https://github.com/coreos/fedora-coreos-tracker

检查操作系统版本。

$ cat /etc/os-release 
NAME=Fedora
VERSION="31.20200113.3.1 (CoreOS)"
ID=fedora
VERSION_ID=31
VERSION_CODENAME=""
PLATFORM_ID="platform:f31"
PRETTY_NAME="Fedora CoreOS 31.20200113.3.1"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:31"
HOME_URL="https://getfedora.org/coreos/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora-coreos/"
SUPPORT_URL="https://github.com/coreos/fedora-coreos-tracker/"
BUG_REPORT_URL="https://github.com/coreos/fedora-coreos-tracker/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=31
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=31
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="CoreOS"
VARIANT_ID=coreos
OSTREE_VERSION='31.20200113.3.1'

$ uname -a
Linux host-10-10-1-126 5.4.8-200.fc31.x86_64 #1 SMP Mon Jan 6 16:44:18 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

使用KVM / QEMU

将下载的映像复制到虚拟机安装目录。范例:

sudo cp fedora-coreos-qemu.qcow2 /var/lib/libvirt/images/fedora-coreos-qemu.qcow2

对于virt-install:

$ virt-install -n fcos --vcpus 2 -r 2048 
  --os-variant=fedora31 --import 
  --network bridge=virbr0 
  --disk=/var/lib/libvirt/images/fedora-coreos-qemu.qcow2,format=qcow2,bus=virtio 
  --noautoconsole 
  --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=/path/to/fcos.ign"

在Fedora CoreOS上安装软件包

Fedora CoreOS上可以安装的软件包数量有限制。更新Fedora CoreOS和安装应用程序的主要方法是rpm-ostree。

rpm-ostree 它通过修改FCOS安装来扩展组成Silverblue的软件包而起作用。程序包分层会创建一个新的“部署”或可引导文件系统根。在对程序包进行分层之后,您需要重新启动系统。这样可以保留回滚和事务处理模型。

  • 首先,生成rpm存储库元数据。
$ sudo rpm-ostree refresh-md 
Enabled rpm-md repositories: updates fedora
Updating metadata for 'updates'... done
rpm-md repo 'updates'; generated: 2020-01-24T14:56:09Z
Updating metadata for 'fedora'... done
rpm-md repo 'fedora'; generated: 2019-10-23T22:52:47Z
Importing rpm-md... done
  • 该软件包可以使用以下方法安装在Silverblue上:
$ sudo rpm-ostree install 
Example:
$ sudo rpm-ostree install vim
Checking out tree f480038... done
Enabled rpm-md repositories: updates fedora
rpm-md repo 'updates' (cached); generated: 2020-01-24T14:56:09Z
rpm-md repo 'fedora' (cached); generated: 2019-10-23T22:52:47Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 13 packages (20.0 MB)
Downloading from 'fedora'... done
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
......

安装软件包后,需要重新启动。

$ sudo systemctl reboot

在裸机上安装

如果您有兴趣通过ISO或PXE引导在裸机上安装FCOS, 裸机安装程序 将Fedora CoreOS刻录到磁盘。在安装过程中将点燃点火器。

加入Fedora CoreOS指南,保持联系。同时,请查看其他指南。

使用工具箱,rpm-ostree和Flatpak管理Fedora Silverblue软件包

如何使用Podman和Libpod运行Docker容器

使用Podman设置Docker容器注册表并加密SSL

使用KVM在CentOS 8 / CentOS 7上安装Minikube Kubernetes

Sidebar