• Fedora CoreOS 安装部署详解


    OpenShift 4.x HOL教程汇总

    Fedora CoreOS 的裸机安装方法_fedora coreos 安装-CSDN博客

    OpenShift 4 - Fedora CoreOS (1) - 最简安装_fedora core 安装_dawnsky.liu的博客-CSDN博客

    OpenShift 和 CoreOS

    我们知道 Red Hat Enterprise Linux CoreOS(简称RHCOS)是 OpenShift 4 使用的 Linux 操作系统(虽然在Worker节点中也可以使用红帽的 RHEL 作为底层操作系统,但是大多数用户用的都是 RHCOS)。Fedora CoreOS(简称FCOS)是 RHCOS 的社区版。FCOS/RHCOS 是 Red Hat 在收购 CoreOS 公司后结合 CoreOS Container Linux 和 Fedora Atomic Host 的优点推出的新一代容器操作系统,其目标是提供最佳的容器主机,从而能安全,大规模地运行容器化的工作负载。FCOS/RHCOS 将 Ignition 与 rpm-ostree 等技术相集成,是一个自动更新的、最小的、整体的、对运行容器和 Kubernetes 进行了优化的操作系统。因为它们更符合“不可变架构(Immutable Infrastructure)” 理念,因此成为 RedHat 推荐的 OpenShift 4 底层操作系统。

    在 OpenShift 4 安装过程会自动安装 CoreOS 的商业版 Red Hat Enterprise Linux CoreOS(简称 RHCOS)。根据 OpenShift 的文档说明, RHCOS 是无法独立运行安装的,它必须和 OpenShift 4 一起运行(因此 RHCOS 没有单独的订阅)。不过好在 CoreOS 还提供了可以 独立运行的社区版 Fedora CoreOS(简称 FCOS)可以完全免费使用。由于 Fedora CoreOS 可以无需 OpenShift 也可以独立安装运行,因此环境搭建过程简单高效,因此本系列使用 Fedora CoreOS 作为研究环境,而相关操作基本都可以适合商业版 RHCOS 环境。
    RHCOS/FCOS 的安装/配置过程和一般的 RHEL 稍有差别。我们需要通过 Ignition 配置文件在安装 RHCOS 的时候 初始化网络、存储、内核、用户等方面的配置。

    安装环境说明

    Fedora CoreOS支持运行在多种IaaS环境下运行。本文安装采用基于虚拟化软件模拟BareMetal环境,其他安装环境请查看Fedora CoreOS的文档。另外还要确保虚拟机可以通过DHCP获得IP地址。

    下载 Fedora CoreOS 相关介质

    安装 Fedora CoreOS 需要下载2个文件:CoreOS ISO和FCCT (Fedora CoreOS Config Transpiler) ,其中Fedora CoreOS ISO文件是用来启动操作系统的,而由FCCT工具生成的Ignition文件是用来提供Fedora CoreOS系统启动参数。

    说明:本章节的操作是在任意一台能上网的宿主机上进行,如果是Windows宿主机需要打开其SSH服务。下文使用“192.168.1.201”作为该宿主机的IP,实际操作请j将“192.168.1.201”替换为自己环境的IP地址。

    3.1 下载 Fedora CoreOS ISO 文件

    打开Fedofa网站的Fedora CoreOS | The Fedora Project网页,然后下载 “Bare Metal” 下的 ISO 文件。本文下载的ISO文件版本是“fedora-coreos-38.20230819.3.0-live.x86_64.iso”。

    3.2 下载 FCCT (Fedora CoreOS Config Transpiler) 文件

    打开Releases · coreos/butane · GitHub网页,下载“butane-aarch64-unknown-linux-gnu”文件,另存为fcct。该文件是用来将基于YAML格式的配置文件转换成基于JSON格式的Ignition文件。

    安装 Fedora CoreOS

    4.1 准备Ignition文件

    1. 执行以下命令,然后在“Password:”的提示后面输入密码(本文使用的密码就是“password”)。命令将返回密码加密后的字符串。
    1. $ openssl passwd -1 -salt yoursalt
    2. Password:
    3. $1$yoursalt$7/tmQXmlhL0pYfN/fyBZS1
    1. 执行命令生成密钥对。执行后可以在当前目录下生成公钥id_rsa.pub和私钥id_rsa
    1. $ ssh-keygen -N '' -f ./id_rsa
    2. Generating public/private rsa key pair.
    3. Your identification has been saved in ./ssh-key/id_rsa.
    4. Your public key has been saved in ./ssh-key/id_rsa.pub.
    5. The key fingerprint is:
    6. SHA256:YvrEIpVUwTbJAXZcB+KJEhPPQGIu4XOwWB696Z90sJE root@node1
    7. The key's randomart image is:
    8. +---[RSA 2048]----+
    9. |o+Ooo=*=o.. |
    10. |==oO.=Bo . |
    11. |o=o.=+oo |
    12. |. ooo.E |
    13. | .o o+S |
    14. | ..+o.. |
    15. | . oooo |
    16. | . +o |
    17. | . |
    18. +----[SHA256]-----+
    1. 查看id_rsa.pub公钥。
    1. $ cat id_rsa.pub
    2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIBxVOCdtNHBgbEVQseDdRonC/OlP5qm7MoKeuwYFjvg6UKXl8MTplQ4ErV1r994XnkErRBzlxsPdn/s7/alJ8CJ3Po39QDMlJvvy/nG3Vak/naxc6hXwL4to1oJrMhyp7YsY2EzPke+b1FyWD6NZ27mhJnCmNhw4pND6QxfZulVCnlolg9BeTSuXaIRrgLnjdSU+9ojTz6BMVo5MWY+xXRNrydlI4rx19tnd0c62SwQnvjO8i+hCXzNAkwGb8J5KDLs7jYZhjOW4IyHa95NdgWlRDcVICQSbA0makjJyIFK9KDzaTYM0MvCpSkMXo9uTFKwPiKfhBrKw9n8nBegXN root@node1
    1. 创建内容如下的config.fcc的文件。其中用户名为core,另外需要将“password_hash”和“ssh_authorized_keys”替换前2步生成的密码和公钥字符串。需要注意的是远程登录CoreOS需要使用证书,而直接登录CoreOS才可以直接使用用户名和密码。
    1. variant: fcos
    2. version: 1.1.0
    3. passwd:
    4. users:
    5. - name: core
    6. password_hash: "$1$yoursalt$7/tmQXmlhL0pYfN/fyBZS1"
    7. ssh_authorized_keys:
    8. - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIBxVOCdtNHBgbEVQseDdRonC/OlP5qm7MoKeuwYFjvg6UKXl8MTplQ4ErV1r994XnkErRBzlxsPdn/s7/alJ8CJ3Po39QDMlJvvy/nG3Vak/naxc6hXwL4to1oJrMhyp7YsY2EzPke+b1FyWD6NZ27mhJnCmNhw4pND6QxfZulVCnlolg9BeTSuXaIRrgLnjdSU+9ojTz6BMVo5MWY+xXRNrydlI4rx19tnd0c62SwQnvjO8i+hCXzNAkwGb8J5KDLs7jYZhjOW4IyHa95NdgWlRDcVICQSbA0makjJyIFK9KDzaTYM0MvCpSkMXo9uTFKwPiKfhBrKw9n8nBegXN root@node1"
    1. 执行命令,使用fcct将config.fcc转换成config.ign。
    1. $ fcct config.fcc -o config.ign
    2. $ more config.ign
    3. {
    4. "ignition": {
    5. "version": "3.1.0"
    6. },
    7. "passwd": {
    8. "users": [
    9. {
    10. "name": "core",
    11. "passwordHash": "$1$yoursalt$7/tmQXmlhL0pYfN/fyBZS1",
    12. "sshAuthorizedKeys": [
    13. "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIBxVOCdtNHBgbEVQseDdRonC/OlP5qm7MoKeuwYFjvg6UKXl8MTplQ4ErV1r994XnkErRBzlxsPdn/s7/alJ8CJ3Po39QDMlJvvy/nG3Vak/naxc6hXwL4to1oJrMhyp7YsY2EzPke+b1FyWD6NZ27mhJnCmNhw4pND6QxfZulVCnlolg9BeTSuXaIRrgLnjdSU+9ojTz6BMVo5MWY+xXRNrydlI4rx19tnd0c62SwQnvjO8i+hCXzNAkwGb8J5KDLs7jYZhjOW4IyHa95NdgWlRDcVICQSbA0makjJyIFK9KDzaTYM0MvCpSkMXo9uTFKwPiKfhBrKw9n8nBegXN root@node1"
    14. ]
    15. }
    16. ]
    17. }
    18. }

    4.2 安装并访问 Fedora CoreOS

    1. 创建一个名为Fedora-CoreOS的虚拟机。使用前面下载的Fedora CoreOS ISO文件 - “fedora-coreos-32.20200907.3.0-live.x86_64.iso”- 作为启动盘,然后将系统的启动顺序设为硬盘第一优先,最后使用Bridge类型的网络
    2. 启动虚拟机,启动完成后虚拟机的控制台会停在以下截图。注意:图上红色提示没有找到Ignition文件。另外根据截图的说明我们可以知道当原始的CoreOS ISO首次启动的时候,它是运行在内存中的。此时我们需要提供给它Ignition文件,CoreOS才可以完成安装。

    1. 在CoreOS虚拟机控制台里执行以下命令,将前面生成的config.ign文件从外部宿主机传入CoreOS虚拟机的当前目录下。
    [core@bogon ~]$ scp root@192.168.1.201:/root/config.ign ./
    
    1. 在CoreOS虚拟机控制台里执行以下命令,根据“config.ign”文件将CoreOS安装到“/dev/sda”硬盘(可以使用“fdisk -l”命令确认有系统中“/dev/sda”)。
    [core@bogon ~]$ sudo coreos-installer install /dev/sda --ignition-file config.ign
    
    1. 完成安装后重启CoreOS虚拟机。

    4.3 登录访问 CoreOS

    1. 在CoreOS虚拟机完成启动后可以在CoreOS虚拟机控制台里用core/password登录进CoreOS。

    1. 在外部宿主机中执行命令,确认可以使用前面创建的私钥登录CoreOS
    1. $ ssh core@<COREOS_IP> -i id_rsa
    2. Fedora CoreOS 32.20200907.3.0
    3. Tracker: https://github.com/coreos/fedora-coreos-tracker
    4. Discuss: https://discussion.fedoraproject.org/c/server/coreos/
    5. Last login: Tue Oct 6 15:15:50 2020
    1. 确认在外部宿主机中已经无法直接通过用户名/密码登录CoreOS了(这是因为缺省CoreOS只能通过证书登录,后面我们将设置可以使用username/password登录)。
    1. $ ssh core@
    2. Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

    设置coreos可以使用username/password登录

    1. #. 1. 修改core用户密码
    2. $. sudo passwd core
    3. # 2. 修改sshd配置
    4. $. sudo vi /etc/ssh/sshd_config
    5. # 修改相应字段为如下内容:
    6. PasswordAuthentication yes
    7. # 3. 重启sshd服务
    8. $. sudo systemctl restart sshd.service
    9. $. systemctl status sshd.service
    10. # 4. 接下来就可以用xshell等工具远程登录rhcos机器了
    1. CoreOS 添加用户并赋予sudo权限

    使用root账号登录CoreOS

    username 为你要添加的用户登录名

    1. 添加用户到root组
    useradd -g rot username
    1. 添加 sudo 权限
    visudo -f /etc/sudoers.d/username
    1. 打开文件输入
    user1ALL=(ALL) NOPASSWD: ALL

    保存退出

    1. 使用username登录系统,然后执行下面代码检查是否授权成功
    username@server ~ $ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

    参考

    Fedora CoreOS installation on Bare Metal Server

    Content Moved :: Fedora Docs

    How to Create an Ignition Configuration File - Vultr.com

  • 相关阅读:
    图纸识别自动生成BOM清单的方法
    Nodejs进程间通信
    JAVA内部类
    高等数学教材重难点题型总结(一)函数与极限
    音视频开发—FFmpeg 从MP4文件中抽取视频H264数据
    STM32低功耗分析
    Java —— 类和对象(一)
    Postman接收列表、数组参数@RequestParam List<String> ids
    jq扩展机制
    Jeff Dean:深度学习的黄金十年
  • 原文地址:https://blog.csdn.net/justlpf/article/details/132856467