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文件
- 执行以下命令,然后在“Password:”的提示后面输入密码(本文使用的密码就是“password”)。命令将返回密码加密后的字符串。
$ openssl passwd -1 -salt yoursalt
Password:
$1$yoursalt$7/tmQXmlhL0pYfN/fyBZS1
- 执行命令生成密钥对。执行后可以在当前目录下生成公钥id_rsa.pub和私钥id_rsa。
$ ssh-keygen -N '' -f ./id_rsa
Generating public/private rsa key pair.
Your identification has been saved in ./ssh-key/id_rsa.
Your public key has been saved in ./ssh-key/id_rsa.pub.
The key fingerprint is:
SHA256:YvrEIpVUwTbJAXZcB+KJEhPPQGIu4XOwWB696Z90sJE root@node1
The key's randomart image is:
+---[RSA 2048]----+
|o+Ooo=*=o.. |
|==oO.=Bo . |
|o=o.=+oo |
|. ooo.E |
| .o o+S |
| ..+o.. |
| . oooo |
| . +o |
| . |
+----[SHA256]-----+
- 查看id_rsa.pub公钥。
$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIBxVOCdtNHBgbEVQseDdRonC/OlP5qm7MoKeuwYFjvg6UKXl8MTplQ4ErV1r994XnkErRBzlxsPdn/s7/alJ8CJ3Po39QDMlJvvy/nG3Vak/naxc6hXwL4to1oJrMhyp7YsY2EzPke+b1FyWD6NZ27mhJnCmNhw4pND6QxfZulVCnlolg9BeTSuXaIRrgLnjdSU+9ojTz6BMVo5MWY+xXRNrydlI4rx19tnd0c62SwQnvjO8i+hCXzNAkwGb8J5KDLs7jYZhjOW4IyHa95NdgWlRDcVICQSbA0makjJyIFK9KDzaTYM0MvCpSkMXo9uTFKwPiKfhBrKw9n8nBegXN root@node1
- 创建内容如下的config.fcc的文件。其中用户名为core,另外需要将“password_hash”和“ssh_authorized_keys”替换前2步生成的密码和公钥字符串。需要注意的是远程登录CoreOS需要使用证书,而直接登录CoreOS才可以直接使用用户名和密码。
variant: fcos
version: 1.1.0
passwd:users:- name: corepassword_hash: "$1$yoursalt$7/tmQXmlhL0pYfN/fyBZS1"ssh_authorized_keys:- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIBxVOCdtNHBgbEVQseDdRonC/OlP5qm7MoKeuwYFjvg6UKXl8MTplQ4ErV1r994XnkErRBzlxsPdn/s7/alJ8CJ3Po39QDMlJvvy/nG3Vak/naxc6hXwL4to1oJrMhyp7YsY2EzPke+b1FyWD6NZ27mhJnCmNhw4pND6QxfZulVCnlolg9BeTSuXaIRrgLnjdSU+9ojTz6BMVo5MWY+xXRNrydlI4rx19tnd0c62SwQnvjO8i+hCXzNAkwGb8J5KDLs7jYZhjOW4IyHa95NdgWlRDcVICQSbA0makjJyIFK9KDzaTYM0MvCpSkMXo9uTFKwPiKfhBrKw9n8nBegXN root@node1"
- 执行命令,使用fcct将config.fcc转换成config.ign。
$ fcct config.fcc -o config.ign
$ more config.ign
{"ignition": {"version": "3.1.0"},"passwd": {"users": [{"name": "core","passwordHash": "$1$yoursalt$7/tmQXmlhL0pYfN/fyBZS1","sshAuthorizedKeys": ["ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIBxVOCdtNHBgbEVQseDdRonC/OlP5qm7MoKeuwYFjvg6UKXl8MTplQ4ErV1r994XnkErRBzlxsPdn/s7/alJ8CJ3Po39QDMlJvvy/nG3Vak/naxc6hXwL4to1oJrMhyp7YsY2EzPke+b1FyWD6NZ27mhJnCmNhw4pND6QxfZulVCnlolg9BeTSuXaIRrgLnjdSU+9ojTz6BMVo5MWY+xXRNrydlI4rx19tnd0c62SwQnvjO8i+hCXzNAkwGb8J5KDLs7jYZhjOW4IyHa95NdgWlRDcVICQSbA0makjJyIFK9KDzaTYM0MvCpSkMXo9uTFKwPiKfhBrKw9n8nBegXN root@node1"]}]}
}
4.2 安装并访问 Fedora CoreOS
- 创建一个名为Fedora-CoreOS的虚拟机。使用前面下载的Fedora CoreOS ISO文件 - “fedora-coreos-32.20200907.3.0-live.x86_64.iso”- 作为启动盘,然后将系统的启动顺序设为硬盘第一优先,最后使用Bridge类型的网络。
- 启动虚拟机,启动完成后虚拟机的控制台会停在以下截图。注意:图上红色提示没有找到Ignition文件。另外根据截图的说明我们可以知道当原始的CoreOS ISO首次启动的时候,它是运行在内存中的。此时我们需要提供给它Ignition文件,CoreOS才可以完成安装。

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

- 在外部宿主机中执行命令,确认可以使用前面创建的私钥登录CoreOS。
$ ssh core@<COREOS_IP> -i id_rsa
Fedora CoreOS 32.20200907.3.0
Tracker: https://github.com/coreos/fedora-coreos-tracker
Discuss: https://discussion.fedoraproject.org/c/server/coreos/Last login: Tue Oct 6 15:15:50 2020
- 确认在外部宿主机中已经无法直接通过用户名/密码登录CoreOS了(这是因为缺省CoreOS只能通过证书登录,后面我们将设置可以使用username/password登录)。
$ ssh core@<COREOS_IP>
Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 设置coreos可以使用username/password登录
#. 1. 修改core用户密码
$. sudo passwd core# 2. 修改sshd配置
$. sudo vi /etc/ssh/sshd_config
# 修改相应字段为如下内容:PasswordAuthentication yes# 3. 重启sshd服务
$. sudo systemctl restart sshd.service
$. systemctl status sshd.service # 4. 接下来就可以用xshell等工具远程登录rhcos机器了 - CoreOS 添加用户并赋予sudo权限
使用root账号登录CoreOS
username 为你要添加的用户登录名
- 添加用户到root组
useradd -g rot username - 添加 sudo 权限
visudo -f /etc/sudoers.d/username - 打开文件输入
user1ALL=(ALL) NOPASSWD: ALL 保存退出
- 使用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
相关文章:
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&…...
Web应用开发 - 实训三 B Servlet基础
Web应用开发 - 实训三 B Servlet基础 前言: 零、前期准备准备工具创建项目导入 jar 包配置运行设置 一、实训第一部分第一张图第二张图第三张图 二、实训第二部分第一张图第二张图 前言: eclipse 是不可能用的,并不是说它界面丑,…...
Debian12安装 Docker
Docker中基本概念 镜像(Image) 镜像,从认识上简单的来说,就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配…...
Elasticsearch:为具有许多 and/or 高频术语的 top-k 查询带来加速
作者:Adrien Grand Disjunctive queries(term_1 OR term_2 OR ... OR term_n)非常常用,因此在提高查询评估效率方面它们受到了广泛关注。 Apache Lucene 对于评估 disjunctive queries 有两个主要优化:一方面用于详尽评…...
【pythonflask-1】简单实现加减乘除输入界面
app.py import flask from flask import Flask, render_template, request # 计算精确的浮点结果,float加法也计算不出来 from decimal import Decimalapp Flask(__name__)app.route(/) def home():return render_template(index.html)app.route(/calculate, meth…...
基于协同过滤算法的旅游推荐系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?
遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化? 可能的原因有几种: 没有提交事务:在使用 MyBatis 进行数据库操作时,需要手动提交事务。你可以在插入数据完成后…...
markdown学习笔记
markdown学习笔记 1.文字(依靠HTML) 1.1文字缩进-空格转义符 单字符空:  半字符空: 1.2文字对齐 「居中:」<center> 居中 </center> or <p align"center"> 居中 …...
C++项目实战——基于多设计模式下的同步异步日志系统-⑧-日志落地类设计
文章目录 专栏导读抽象基类StdoutSink类设计FileSink类设计RollBySizeSink类设计日志落地工厂类设计日志落地类整理日志落地拓展测试RollByTimeSink类设计测试代码测试完整代码 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领…...
从零开始探索C语言(八)----指针
文章目录 1. 什么是指针?2. 如何使用指针?3. NULL 指针4. 指针的算术运算5. 指针数组6. 指向指针的指针7. 传递指针给函数8. 从函数返回指针 有人说,指针是C语言的灵魂,所以学习C语言,学习指针是很有必要的。 通过指针…...
SpringMVC 的三种异常处理方式详解
目录 1. 什么是异常 2. 为什么要全局异常处理 3. SpringMVC异常分类 4. 异常处理思路 5. 三种异常处理方式示例 ① 配置 SimpleMappingExceptionResolver 处理器 ② 实现 HandlerExceptionResolver 接口 ③ 使用ControllerAdviceExceptionHandler实现全局异常 6. 响应…...
莫比乌斯召回系统介绍
当前召回系统只能召回相关性高的广告,但不能保证该广告变现能力强。莫比乌斯做了如下两点创新: 在召回阶段,引入CPM等业务指标作为召回依据在召回阶段,引入CTR模型,从而召回更多相关性高且变现能力强的广告 参考 百度…...
使用ASM修改组件化 ARouter
工程目录图 1. apt生成的字节码文件 2. asm 生成的代码 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:TestCompont...
第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
(二十八)大数据实战——Flume数据采集之kafka数据生产与消费集成案例
前言 本节内容我们主要介绍一下flume数据采集和kafka消息中间键的整合。通过flume监听nc端口的数据,将数据发送到kafka消息的first主题中,然后在通过flume消费kafka中的主题消息,将消费到的消息打印到控制台上。集成使用flume作为kafka的生产…...
vue3:22、vue-router的使用
import { createRouter, createWebHistory } from vue-router//history模式:createWebHistory //hash模式:createWebHashHistory//vite中的环境变量 import.meta.env.BASE_URL 就是vite.config.js中的base配置项 const router createRouter({history:…...
深入理解JVM虚拟机第五篇:一些常用的JVM虚拟机(二)
文章目录 一:JRockit VM的介绍 二:J9 VM的介绍 三:KVM和CDC/CLDC Hotspot 四:Azul VM的介绍 五:Liquid VM的介绍 六:Apache Harmoney 七:Microsoft JVM 八:Taobao JVM 九&a…...
导数公式及求导法则
目录 基本初等函数的导数公式 求导法则 有理运算法则 复合函数求导法 隐函数求导法 反函数求导法 参数方程求导法 对数求导法 基本初等函数的导数公式 基本初等函数的导数公式包括: C0(x^n)nx^(n-1)(a^x)a^x*lna(e^x)e^x(loga(x))1/(xlna)(lnx)1/x(sinx)cos…...
SpringMVC系列(六)之JSON数据返回以及异常处理机制
目录 前言 一. JSON概述 二. JSON数据返回 1. 导入pom依赖 2. 添加配置文件(spring-mvc.xml) 3. ResponseBody注解使用 4. 效果展示 5. Jackson介绍 三. 全局异常处理 1. 为什么要全局异常处理 2. 异常处理思路 3. 异常处理方式一 4. 异常处…...
民安智库(北京第三方窗口测评)开展汽车消费者焦点小组座谈会调查
民安智库近日开展了一场汽车消费者焦点小组座谈会,旨在深入了解目标消费者对汽车功能的需求和消费习惯,为汽车企业提供有针对性的解决方案。 在焦点小组座谈会中,民安智库公司(第三方市容环境指数测评)邀请了一群具有…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
