• [分享交流] openeuler22.03 服务器在运营docker容器时,容器内执行python2.7命令会导致cpu占比90%。
    openeuler22.03 服务器在运营docker容器时,容器内执行python2.7命令会导致cpu占比100%。经过测试:镜像版本为:centos:centos7.8.2003  centos:centos8 ubuntu:20.04 都会有下面的问题。宿主机规格:4U4G安装oslo.concurrency==3.25.0单独运行python2.7 from oslo_concurrency import processutils processutils.execute("ls") 命令后卡死top查看进程 发现python占用cpu高达80%
  • [问题求助] 【鲲鹏服务器】【编译安装mysql】【openEuler】【openssl】编译安装mysql报错
    【服务器信息】操作系统openEuler23,cpu鲲鹏【主要内容】我参考patch使用说明-MySQL OLAP并行优化特性-基础加速特性-鲲鹏BoostKit数据库使能套件-文档首页-鲲鹏社区 (hikunpeng.com)优化mysql,按照教程操作,在使用cmake编译安装mysql的时候出现如下错误错误信息提示我没有安装openssl,我就去执行安装,发现系统已经存在openssl然后去网上找结局方法,我看有的openssl是1.1版本的,我就去装1.1的版本,结果还是报没有openssl错误
  • 华为atlas openeuler操作系统制卡失败
    制卡失败,失败原因为qemu is broken or the version of qemu is not compatible我已经按照华为官方文档的要求安装了相应的依赖软件,为什么还会出现qemu broken的错误
  • iSulad不通过K8S,如何使用veth-pair来连接网络
    iSulad不通过K8S,如何使用veth-pair来连接网络?
  • [课程学习] 求助一下关于配置yum的问题
    操作系统课程要求安装虚拟机,用的学校提供的这个教程https://blog.csdn.net/frdevolcqzyxynjds/article/details/105648163全部按照教程要求,在配置openEuler的yum源的时候,别的都没事,就在更新yum源的时候显示了这个问题在社区和搜索引擎上全都搜索过了,也问过做过的朋友,都找不到解决方案(那个baseurl的网址换过很多种且都人工搜索过全是有效网址)......老师规定周一前要上交,现在属于是第一步直接卡死......有人知道这个怎么解决吗,孩子不想实验课全部重修呃呃
  • [问题求助] 在openEuler aarch64 22.03-lts容器中启动rsyslog报错,求助
    在openEuler 22.03-lts aarch64版本的容器中安装rsyslogd,根据centos的类似方法,将以下注释 #### MODULES ####  #module(load="imuxsock"           # provides support for local system logging (e.g. via logger command) #       SysSock.Use="off") # Turn off message reception via local log socket;                           # local messages are retrieved through imjournal now. #module(load="imjournal"            # provides access to the systemd journal #       StateFile="/run/log/imjournal.state") # File to store the position in the journal #module(load="imklog") # reads kernel messages (the same are read from journald) #module(load="immark") # provides --MARK-- message capability  #$imjournalRatelimitInterval 0 启动rsyslog报错 [root@fb4bbc75f4e5 ~]# rsyslogd  rsyslog startup failure, child did not respond within startup timeout (60 seconds) 求助解决
  • [其他问题] PXE安装openEuler时缺少网卡驱动
    请教下如何在openEuler 20.03 LTS SP1 pxe镜像initrd.img中添加网卡驱动
  • [经验案例] 【OpenEuler 01】重新编译openEuler内核,修改内核PAGESIZE大小为4K
    一、配置openeuler源1、执行如下命令, 下载新的openEulerOS.repo到/etc/yum.repos.d/目录下.for aarch64 :wget -O /etc/yum.repos.d/openEulerOS.repo https://repo.huaweicloud.com/repository/conf/openeuler_aarch64.repo2、执行yum clean all清除原有yum缓存。3、执行yum makecache生成新的缓存。4、添加基本OS依赖yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel openblas-devel gcc-gfortran ncurses-devel bison m4 flex bc二、重新编译openeuler内核1、下载当前版本的内核源码yum install -y kernel-source.aarch642、开始修改内核参数cd /usr/src/linux-4.19.90-2212.4.0.0183.oe1.aarch64/ make menuconfig3、修改内核PAGESIZE大小为4K。3.1 选择“Kernel Features”。3.2 按“Enter”键进入下一级菜单,选择“Page size(64KB)”。3.3 按“Enter”键进入选择,按“Space”键选择4KB。3.4 按两次“exit”保存并退出。4、开始编译make -j 645、安装make modules_install make install6、更新grub启动列表grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg7、修改默认内核启动项。cat /etc/grub2-efi.cfg | grep openEuler其中“openEuler (4.19.90) 20.03 (LTS-SP3)”为新安装内核版本。grub2-set-default "openEuler (4.19.90) 20.03 (LTS-SP3)"8、重启系统。reboot9、重启后查看PAGESIZEgetconf PAGESIZE结果符合预期[root@localhost ~]# [root@localhost ~]# getconf PAGESIZE 4096 [root@localhost ~]#
  • [问题求助] 鲲鹏平台应用软件移植调优综合实验 基于华为云鲲鹏弹性云服务器部署OA系统。
    在该课程中,我在部署安装OA系统时,需要下载classpath.txt文件,但是视频中和实验指导书中的链接已经失效,wget https://hcia.obs.cn-north-4.myhuaweicloud.com/v1.5/classpath.txt,该步骤在实验指导书第34页,4.8步骤处在网上实在不到资源,寻求大佬帮助。
  • [交流分享] EulerOS的安全性考虑
    EulerOS团队尽最大的努力保障客户的安全,并且我们将软件安全视为一个持续发展的过程,执行以下措施:迅速对安全事件做出反应,并提供高品质的安全更新。持续改进EulerOS产品中与安全相关功能。持续促进开源软件的快速成长。尊重开源软件开放性、透明性和可追溯性的安全原则。软件系统的安全是一个复杂的挑战,它涉及到软件编码、用户管理、系统运维等方方面面。同时,随着时代发展和科技进步,新的安全风险会层出不穷。EulerOS安全团队持续地关注和处理软件安全的所有问题,保障客户系统的安全。安全的两个方面 系统软件通常会提供一系列的安全功能,例如身份验证方法、加密、入侵防御/检测、备份等;另外,它还可能包含会影响系统安全性的错误,包括设计缺陷,编程错误和后门等。EulerOS安全团队的目标是及时发现安全相关的错误并提供解决方案,提供强大易用的安全特性,降低安全风险,保障用户系统的安全。安全特性:当前Linux操作系统都具有丰富的安全功能,包括访问控制、入侵防御/检测、灵活可靠的身份验证机制、文件和网络连接加密、文件完整性检查、网络分析工具和监控/日志工具等。还有一些高级工具,帮助您安全地配置和管理您的系统,下载和安装更新包。系统更新包能够修复EulerOS产品中发现的安全漏洞。系统中的安全功能和特性,需要用户去学习如何使用和配置;利用这些功能,用户能够进一步提高默认情况下系统的隐私和安全级别。安全漏洞:软件都是由程序员编写,尽管有很多流程以及质量上的措施,也无法保证完全没有错误。在这些错误中,有一些可能会导致软件或整个系统崩溃,而另外一些则不会对系统造成这么大的影响,通常难以被发现,却可能引入安全风险。本地或远程攻击者能够利用软件的编程错误,将恶意数据导入到软件中,导致应用程序崩溃,拒绝服务,或者执行来自攻击者的代码,对系统程序进行控制。这样的安全漏洞会对用户的系统和数据带来很高的安全风险,攻击者可以删除、篡改或甚至窃取用户的数据,或者通过用户系统执行非法操作。我们为安全所做的努力对EulerOS系统中使用的软件进行仔细的甄别筛选。开发安全相关的工具和应用程序。定期对开源软件进行源代码审计。源代码审计是程序员为实现软件功能而写的详细深入分析。监视安全邮件列表中与软件安全性相关的错误。保持与软件作者、专门从事软件安全的组织和个人的沟通,以便迅速了解和熟悉软件中安全相关故障的技术和组织细节。通过安全更新的形式提供软件安全漏洞的解决方案。以EulerOS安全公告的形式向用户通知错误和安全更新。
  • [技术干货] openEuler操作系统安装
    openEuler[1] 是一个开源、免费的 Linux 发行版平台,通过开放的社区形式与全球的开发者共同构建一 个开放、 多元和架构包容的软件生态体系。同时,openEuler 也是一个创新的平台,鼓励任何人在该平台上提出新想法、开拓新思路、实践新方案。【学习目标】openEuler 原生系统的启动和安装参与贡献 openEuler【环境准备】工欲善其事,必先利其器。首先,我们需要做一些 openEuler 安装的环境准备。1. 操作系统:Windows 10 (64位)使用我们最常用的操作系统,为安装 openEuler 的相关工具提供基础运行环境。2. 虚拟机:Oracle VM VirtualBoxVirtualBox 是由 Oracle 开发的一款针对 x86 硬件的虚拟机,为 openEuler 提供了安装、运行、配置等环境。在 VirtualBox 官网 [2] 下载 Windows 版本 的 VirtualBox,本文主要以 6.1.12 platform 为例来介绍 openEuler 的安装过程。3. openEuler 镜像:openEuler-20.03-LTS-x86_64-dvd.isoopenEuler 镜像提供了完整的 openEuler ,目前架构支持 X86_64 和 aarch64。在 openEuler 开源社区获取 openEuler 镜像 repo 源 [3],选择 openEuler-20.03-LTS-x86_64-dvd.iso[4] 下载。【安装体验】万事俱备,只欠东风。在环境和工具准备完毕后,我们就可以进入正题 ——openEuler 的安装。1. openEuler 的安装模式openEuler 提供了 2 种安装模式,以应对不同的场景需求:文本模式:适用于服务器场景。图形模式:适用于服务器和 PC 场景,有一定的软硬件约束,需要提供显卡和图形驱动的支持。接下来,将主要介绍在图形模式下安装 openEuler 的过程。在此之前,我们需要先安装 Virtual Box 虚拟机,来运行 openEuler 所需的安装环境。2. Virtual Box VM 安装\1) 建立 openEuler 的启动项打开下载完成的 Oracle VM VirtualBox,新建 openEuler 启动环境。在 工具 选项卡中,点击 新建 按钮,选择新建虚拟电脑;设置 openEuler 名称、VM 目录及 Windows 版本,由于系统版本默认是 Windows 7,我们需要手动选择 Windows 10(64-bit)。\2) 分配内存VirtualBox 会视当前设备的配置而自动建议分配内存大小,一般使用建议的内存分配大小,后面也可以根据实际使用情况来手动调整。\3) 新建虚拟硬盘勾选 现在创建虚拟硬盘选项来新建虚拟硬盘,文件类型选择 VDI(VirtualBox 磁盘映像);分配模式选择 动态分配;文件位置和大小选择默认即可。openEuler 启动环境新建完成后,还需要对虚拟机的启动项进行一些基本的设置。\4) 基本设置存储:引用 openEuler 的 ISO 镜像。系统 - 主板 - 启动顺序:确保第一顺序设置为 光驱 ,防止引用到硬盘上其他 ISO。到这里,Virtual Box 虚拟机环境和 openEuler 启动项的设置基本完成,部分偏好设置可根据自身的情况进行调整,点击右侧的启动按钮,就可以进入 openEuler 的安装阶段。3. openEuler 安装\1) 选择启动盘点击文件夹图标,注册/新建一个 ISO 镜像引用,然后选择下载好的 openEuler ISO 镜像,点击启动。\2) 安装 openEuler 20.03-LTS选择 Install openEuler 20.03-LTS,按下回车键进行安装。其中,Test media 是用来进行文件完整性校验,防止 ISO 文件内容的缺失,通常情况下,选择直接安装即可。首先来到 openEuler 欢迎界面,这里的语言选择指的是安装过程中的语言环境,选择简体中文的语言环境,点击继续。然后进入安装信息摘要界面,针对 OS 环境进行一些配置:本地化:语言代表着安装完成后的 OS 语言环境;时间和日期代表着时区,默认是上海。软件:安装源代表着光驱内的我们下载的 ISO 镜像,可以作为自动安装介质使用;软件选择代表着当前环境附加的功能,一般我们选择默认的最小安装,来保证拥有基本的核心功能。系统:安装位置代表着 openEuler 的安装磁盘对应位置,确认好磁盘,点击完成将自动分区;网络和主机名代表着网络的连接,我们需要确保以太网处于连接状态。安装信息确认后,我们点击开始安装,可以看到 openEuler 的安装进度。在等待安装时,我们还能够设置 Root 密码,将在后续的系统登录中使用到,密码规范需要三种以上的字符类型,设置完毕后点击完成,当看到界面中的红色警告消失,说明密码设置成功。在安装完成之后,需要重新启动系统。我们关闭电源,依次打开启动项 - 设置 - 系统 - 主板 - 启动顺序,将硬盘提升到第一启动顺序,同时也可以删除 ISO 镜像引用。再次启动系统,在短暂的进程等待后,输入 Root 密码,我们就可以进入并使用 openEuler 了。由此可见,openEuler 的图形模式安装简单快速,易于上手。4. openEuler 的启动流程学习了 openEuler 的安装,我们再了解一下 openEuler 的启动模式和流程。针对不同的架构,openEuler 提供的启动模式也不同。X86 架构包含 Legacy 和 UEFI 模式,而 ARM 架构目前只包含 UEFI 模式。上文中的安装启动流程,就是采用的 Legacy 模式。经 BootLoader 最终到硬盘引导的 GURB2, GURB2 引导内核 Kernel - initrd - systemd 进程,最后启动 openEuler 社区目前维护的程序 ANACONDA。5. openEuler 自动化安装除了图形安装模式,openEuler 社区还提供了文本模式的 自动化安装,以及各类虚拟机配置,方便 DIY 爱好者使用。openEuler 支持 pxe 自动化安装部署,具体流程如下图所示,环境除了物理 / 虚拟机和 ISO 镜像外,还需要用来存放 kickstart 文件 的 httpd 和 提供 vmlinuz 与 initrd 文件的 tftp 服务器,以及 kickstart 的自定义安装配置。\1) 安装之前,需要确保 http 服务器的防火墙处于关闭状态,使用防火墙关闭指令:iptables -F\2) httpd 的安装与服务启动# dnf install httpd -y# systemctl start httpd# systemctl enable httpd\3) tftp 的安装与配置# dnf install tftp-server -y# vim /etc/xinetd.d/tftpservice tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /var/lib/tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4}# systemctl start tftp# systemctl enable tftp# systemctl start xinetd# systemctl status xinetd# systemctl enable xinetd\4) 安装源的制作# mount openEuler-20.03-LTS-aarch64-dvd.iso /mnt# cp -r /mnt/* /var/www/html/openEuler/\5) openEuler-ks.cfg 的设置和修改,kickstart 配置文件可根据实际需求进行额外的更改#vim /var/www/html/ks/openEuler-ks.cfg====================================***以下内容根据实际需求进行修改***#version=DEVELignoredisk --only-use=sdaautopart --type=lvm# Partition clearing informationclearpart --none --initlabel# Use graphical installgraphical# Keyboard layoutskeyboard --vckeymap=cn --xlayouts='cn'# System languagelang zh_CN.UTF-8#Use http installation sourceurl --url=//192.168.122.1/openEuler/%post#enable kdumpsed -i "s/ ro / ro crashkernel=1024M,high /" /boot/efi/EFI/openEuler/grub.cfg%end...6)kickstart 自定义安装配置a. 获取 ks 配置文件手动安装完成之后,在 /root 目录下会自动生成 anaconda-ks.cfg 文件b. 指定 ks 文件启动参数添加:inst.ks=[http|ftp|nfs]://path\7) 修改 pxe 配置文件 grub.cfg,以下配置内容可供参考# cp -r /mnt/images/pxeboot/* /var/lib/tftpboot/# cp /mnt/EFI/BOOT/grubaa64.efi /var/lib/tftpboot/# cp /mnt/EFI/BOOT/grub.cfg /var/lib/tftpboot/# ls /var/lib/tftpboot/grubaa64.efi grub.cfg initrd.img TRANS.TBL vmlinuz# vim /var/lib/tftpboot/grub.cfgset default="1" function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi} load_videoset gfxpayload=keepinsmod gzioinsmod part_gptinsmod ext2 set timeout=60 ### BEGIN /etc/grub.d/10_linux ###menuentry 'Install openEuler 20.03 LTS' --class red --class gnu-linux --class gnu --class os { set root=(tftp,192.168.1.1) linux /vmlinuz ro inst.geoloc=0 console=ttyAMA0 console=tty0 rd.iscsi.waitnet=0 inst.ks=http://192.168.122.1/ks/openEuler-ks.cfg initrd /initrd.img}\8) DHCP 的配置(可以使用 dnsmasq 代替 )# dnf install dhcp -y## DHCP Server Configuration file.# see /usr/share/doc/dhcp-server/dhcpd.conf.example# see dhcpd.conf(5) man page## vim /etc/dhcp/dhcpd.confddns-update-style interim;ignore client-updates;filename "grubaa64.efi";    # pxelinux 启动文件位置;next-server 192.168.122.1;  # (重要)TFTP Server 的IP地址;subnet 192.168.122.0 netmask 255.255.255.0 {option routers 192.168.111.1; # 网关地址option subnet-mask 255.255.255.0; # 子网掩码range dynamic-bootp 192.168.122.50 192.168.122.200; # 动态ip范围default-lease-time 21600;max-lease-time 43200;}# systemctl start dhcpd# systemctl enable dhcpd\9) 在 Start boot option 界面按下 F2 选择从网络 pxe 启动,开始自动化安装openEuler 提供的文本模式下 pxe 自动化安装,充分满足了 DIY 爱好者的需求,同时还提供了简易快速,便于上手的图形安装模式,以此来面向不同场景和人群。在了解 openEuler 安装、启动流程后,跟着文中的步骤,一起来体验开放多元的 openEuler!【参与贡献 openEuler】1. 关于 openEuleropenEuler 的愿景:通过社区合作,打造创新平台,构建支持多处理器架构、统一和开放的操作系统 openEuler,推动软硬件生态繁荣发展。目前 openEuler 正处于升级 SIG 的阶段,对以下模块感兴趣的朋友可以一起参与进来:anaconda/lorax/pykickstart/python-blivetgrub2/syslinuxyum/dnf也可以在码云 gitee 的 openEuler 社区 [5] 中贡献力量:Fork the projectCheckout the branchCommit your codePull request参考资料
  • [技术干货] 欧拉操作系统
    “欧拉+鸿蒙”是华为着力打造的两个系统,是华为的“铸魂”工程。鸿蒙服务于智能终端、物联网和工业终端。欧拉不仅服务鲲鹏,也支持X86、定位于面向服务器、边缘计算、云、嵌入式设备等领域的操作系统,2019年,华为把自己在服务器操作系统上积累了10余年的能力开放出来,欧拉操作系统正式开源。2021年11月,华为宣布捐赠欧拉系统,将全量代码等捐赠给开放原子开源基金会。2022年4月15日,欧拉捐赠后首个社区共建版本openEuler 22.03 LTS正式发布,这也是首个支持数字基础设施全场景的长周期版本,同时已有8家欧拉生态伙伴宣布即将推出基于openEuler 22.03 LTS的商业发行版。欧拉在政府、运营商、金融、能源、交通、互联网等行业已规模应用,累计超过130万套。2022年,欧拉在行业应用将新增200万套,未来,将有更快的增长和突破。01欧拉操作系统概述欧拉操作系统(openEuler,简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘计算、嵌入式等四大应用场景,支持多样性计算,致力于提供安全、稳定、易用的操作系统。欧拉作为一个操作系统发行版平台,每两年推出一个LTS版本。该版本为企业级用户提供了一个安全稳定可靠的操作系统。欧拉也是一个技术孵化器。通过每半年发布一次的创新版,快速集成openEuler以及其他社区的最新技术成果,将社区验证成熟的特性逐步汇合到发行版中。这些新特性以单个开源项目的方式存在于社区,方便开发者获得源代码,也方便其他开源社区使用。根据《中国服务器操作系统市场研究报告》,2021年欧拉在政府、运营商行业实现新增市场份额第一,在金融行业市场增速第一。02欧拉产业链欧拉产业链包括欧拉共建者和欧拉下游厂商。欧拉共建者包括处理器多样算力厂商、操作系统厂商、行业ISV厂商等,下游应用厂商包括运营商、金融、政府等主体。欧拉发展迅速,下游应用广泛,产业供应链具有较强的安全性。截至目前,欧拉开源社区已经汇聚了330多家企业伙伴,包括芯片厂商、整机厂商、操作系统厂商、应用软件厂商等,吸引近万名开发者,成立近百个特别兴趣小组,全球下载量超过47万,PR合入超过5.5万。支持主流的芯片厂商包括Avago、Emulex、Intel、鲲鹏、龙芯、Mellanox、NVIDIA、飞腾、Qlogic、树莓派、RISC-V、兆芯、申威等;整机厂商包括百信、新华三、湘江鲲鹏、四川虹信、黄河科技、联想、宝德、曙光、清华同方、长江计算、超聚变、神州云科等。共建厂商:OSV厂商,麒麟信安、中科创达等;ISV厂商,润和软件、青云信息、拓维信息、东方通、创意信息、软通动力等;芯片厂商,龙芯中科等。随着openEuler 22.03 LTS版本的发布,麒麟软件、统信软件、麒麟信安、SUSE、超聚变、新华三、$中科创达(SZ300496)$ 、科东软件等伙伴,也宣布即将推出基于openEuler 22.03 LTS的商业发行版,将社区创新成果应用到各行各业,转化为数字经济发展的原动力。03欧拉四大场景的不同镜像创新针对4大场景提供不同系统镜像,做到统一内核、统一构建、统一SDK、统一联接和统一开发工具。1.服务器场景openEuler22.03LTSServer新文件系统EulerFS:面向非易失性内存的新文件系统,采用软更新、目录双视图等技术减少文件元数据同步时间,提升文件读写性能。内存分级扩展etMem:新增用户态swap功能,策略配置淘汰的冷内存交换到用户态存储,用户无感知,性能优于内核态swap。内存RAS增强:内存可靠性分级技术,可以指定内核、关键进程等对内存故障敏感的数据优先使用高可靠内存,降低宕机率,提升可靠性(技术预览特性)。2.云计算场景openEuler22.03LTSCloud容器操作系统KubeOS:云原生场景,实现OS容器化部署、运维,提供与业务容器一致的基于K8s的管理体验。安全容器方案:iSulad+shimv2+StratoVirt安全容器方案,相比传统Docker+Qemu方案,底噪和启动时间优化40%。双平面部署工具eggo:ARM/x86双平面混合集群OS高效一键式安装,百节点部署时间<15min。3.边缘计算场景openEuler22.03LTSEdge提供统一的跨边云的协同框架(KubeEdge+),实现边云之间的应用管理与部署,跨边云的通信,以及跨边云的南向外设管理等基础能力。可应用智能制造、城市交通、高速收费稽查、智慧加油站、医疗影像识别、智慧园区等广泛的边云协同场景。4.嵌入式场景openEuler22.03LTSEmbedded轻量化能力:开放yocto小型化构建裁剪框架,支撑OS镜像轻量化定制,提供OS镜像<5M,以及<5S快速启动等能力。多硬件支持:新增支持树莓派作为嵌入式场景通用硬件。软实时内核:基于Linux5.10内核提供软实时能力,软实时中断响应时延微秒级。混合关键性部署:实现SOC内实时和非实时多平面混合部署,并支持Zephyr实时内核。分布式软总线基础能力:集成鸿蒙的分布式软总线,实现欧拉嵌入式设备之间互联互通。嵌入式软件包支持:新增80+嵌入式领域常用软件包的构建。嵌入式系统可广泛应用于航空航天、工业控制、电信设备、汽车及医疗等领域;随着5G、AI新型技术的成熟,还可应用于物联网IoT设备,边缘智能计算设备等。目前欧拉已成为数字基础设施的开源操作系统,支持多样性设备且覆盖全场景应用。而欧拉与鸿蒙在能力和生态进一步打通后形成互补,可以更充分地服务数字全场景。承诺不做欧拉商业发行版的华为未来将不遗余力地携手助力合作伙伴,在商业推广与开源建设方面一同走向全球市场作者:红旗招展666 链接:cid:link_0 来源:雪球 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 风险提示:本文所提到的观点仅代表个人的意见,所涉及标的不作推荐,据此买卖,风险自负。
  • [技术干货] 离线部署k8s集群
    离线部署k8s集群集群配置CPU鲲鹏920系统openEuler 22.03 LTS aarch64master-ip192.168.1.111node1-ip192.168.1.112node2-ip192.168.1.113k8s1.23.6docker19.03.11路径规划vim/opt/vimtar/opt/tarntpd/opt/ntpdsocat/opt/socatconntrack/opt/conntrackdocker/opt/dockerimages/opt/imageskubectl/kubeadm/kubelet/opt/k8scni/opt/cnicritest/opt/critestcalico/opt/calicodashboard/opt/dashboard准备离线包rpm包vimyum install -y --downloadonly --downloaddir=/opt/vim vimtaryum install -y --downloadonly --downloaddir=/opt/tar tarntpdyum install -y --downloadonly --downloaddir=/opt/ntpd ntpdsocatyum install -y --downloadonly --downloaddir=/opt/socat socatconntrackyum install -y --downloadonly --downloaddir=/opt/conntrack conntrack二进制包dockercd /opt/docker && wget https://download.docker.com/linux/static/stable/aarch64/docker-19.03.11.tgzkubectl/kubeadm/kubeletcd /opt/k8s curl -LO https://dl.k8s.io/release/v1.23.6/bin/linux/arm64/kubectl curl -LO https://dl.k8s.io/release/v1.23.6/bin/linux/arm64/kubeadm curl -LO https://dl.k8s.io/release/v1.23.6/bin/linux/arm64/kubeletcnicd /opt/cni && wget https://github.com/containernetworking/plugins/releases/download/v0.9.1/cni-plugins-linux-arm64-v0.9.1.tgzcritestcd /opt/critest && wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.22.0/critest-v1.22.0-linux-arm64.tar.gzetcdcd /opt/etcd && wget https://github.com/etcd-io/etcd/releases/download/v3.5.5/etcd-v3.5.5-linux-arm64.tar.gzdocker镜像控制平面镜像kubeadm config images list kubeadm config images pullcalico镜像cd /opt/calico && curl https://docs.projectcalico.org/manifests/calico.yaml -O cat calico.yaml \ | grep image: \ | awk '{print "docker pull " $2}' \ | shdashboard镜像docker pull kubernetesui/dashboard:v2.5.1 docker pull kubernetesui/metrics-scraper:v1.0.7导出docker save -o /opt/images/k8s.gcr.io.kube-apiserver.v1.23.6.tar k8s.gcr.io/kube-apiserver:v1.23.6 docker save -o /opt/images/k8s.gcr.io.kube-proxy.v1.23.6.tar k8s.gcr.io/kube-proxy:v1.23.6 docker save -o /opt/images/k8s.gcr.io.kube-controller-manager.v1.23.6.tar k8s.gcr.io/kube-controller-manager:v1.23.6 docker save -o /opt/images/k8s.gcr.io.kube-scheduler.v1.23.6.tar k8s.gcr.io/kube-scheduler:v1.23.6 docker save -o /opt/images/k8s.gcr.io.etcd.v3.5.1-0.tar k8s.gcr.io/etcd:3.5.1-0 docker save -o /opt/images/k8s.gcr.io.coredns.coredns.v1.8.6.tar k8s.gcr.io/coredns/coredns:v1.8.6 docker save -o /opt/images/k8s.gcr.io.pause.v3.6.tar k8s.gcr.io/pause:3.6 docker save -o /opt/images/calico.kube-controllers.v3.24.5.tar calico/kube-controllers:v3.24.5 docker save -o /opt/images/calico.cni-v3.24.5.tar calico/cni:v3.24.5 docker save -o /opt/images/calico.node-v3.24.5.tar calico/node:v3.24.5 docker save -o /opt/images/dashboard.tar kubernetesui/dashboard:v2.5.1 docker save -o /opt/images/metrics-scraper.tar kubernetesui/metrics-scraper:v1.0.7配置文件dashboard.ymlcd /opt/dashboard && wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml -O dashboard-v2.5.1.yaml上传离线包master/node上传scp/ftp等rpmrpm -ivh *.rpmdocker镜像docker load -i /opt/images/k8s.gcr.io.kube-apiserver.v1.23.6.tar docker load -i /opt/images/k8s.gcr.io.kube-controller-manager.v1.23.6.tar docker load -i /opt/images/k8s.gcr.io.kube-proxy.v1.23.6.tar docker load -i /opt/images/k8s.gcr.io.kube-scheduler.v1.23.6.tar docker load -i /opt/images/k8s.gcr.io.coredns.coredns.v1.8.6.tar docker load -i /opt/images/k8s.gcr.io.etcd.v3.5.1-0.tar docker load -i /opt/images/k8s.gcr.io.pause.v3.6.tar docker load -i /opt/images/calico.kube-controllers.v3.24.5.tar docker load -i /opt/images/calico.cni-v3.24.5.tar docker load -i /opt/images/calico.node-v3.24.5.tar docker load -i /opt/images/dashboard.tar docker load -i /opt/images/metrics-scraper.tarhostnamemaster设置hostnamectl set-hostname masternode1设置hostnamectl set-hostname node1node2设置hostnamectl set-hostname node2hostsmaster/node设置cat >> /etc/hosts << EOF 192.168.1.111 master 192.168.1.112 node1 192.168.1.113 node2 EOF免密master生成密钥ssh-keygen t rsa将密钥分发给nodessh-copy-id node1 ssh-copy-id node2防火墙master/node关闭防火墙systemctl stop firewalld取消开机自启动防火墙systemctl disable firewalld查看防火墙状态systemctl status firewalldSELinuxmaster/node临时关闭SELinuxsetenforce 0 永久关闭SELinuxsed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux查看SELinux状态getenforceSwapmaster/node临时关闭Swapswapoff -a永久关闭Swapsed -ri 's/.*swap.*/#&/' /etc/fstab 查看SELinux状态free将桥接的 IPv4 流量传递到 iptables 的链master/node设置modprobe br_netfilter lsmod | grep br_netfilter touch /etc/resolv.conf cat <<EOF | tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system查看配置cat /etc/sysctl.conf若有内容,替换原有内容sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g" /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g" /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g" /etc/sysctl.conf sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g" /etc/sysctl.conf sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g" /etc/sysctl.conf sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g" /etc/sysctl.conf sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g" /etc/sysctl.conf若无内容,向其追加echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf使其生效sysctl -p时间同步master/node自启动ntpdsystemctl enable ntpdmaster修改配置cat >> /etc/ntp.conf << EOF # 允许局域网网段内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间和远程登录 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 指定ntp服务器的地址 # 将当前主机作为时间服务器 server 127.127.1.0 # 时间服务器层级 0-15 0表示顶级 10通常用于给局域网主机提供时间服务 fudge 127.127.1.0 stratum 10 EOF重启systemctl restart ntpdnode修改配置cat >> /etc/ntp.conf << EOF server 192.168.1.111 profer EOF重启systemctl restart ntpd手动同步时间ntpdate -u 192.168.1.111自动同步时间 crontab -e*/5 * * * * /usr/sbin/ntpdate -u 192.168.1.111 >/dev/null 2>&1重启crond服务systemctl restart crond验证ntpq -pdockermaster/node解压cd /opt/docker && tar -zxf docker-19.03.11.tgz cp docker/* /usr/bin/创建docker.servicecat <<EOF | tee /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker # 开启远程连接 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target EOF配置 cgroup 驱动程序cat <<EOF | tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] } EOF启动并设置开启自启systemctl daemon-reload systemctl enable docker systemctl start dockercnimaster/node解压cd /opt/cni && tar -zxf cni-plugins-linux-arm64-v0.9.1.tgz -C /usr/bincritestmaster/node解压cd /opt/critest && tar -zxf critest-v1.22.0-linux-arm64.tar.gz -C /usr/bin bashk8smaster/node赋予可执行权限cd /opt/k8s && chmod +x ./* && cp ./* /usr/bin/kubelet系统服务cat <<EOF | tee /etc/systemd/system/kubelet.service [Unit] Description=kubelet: The Kubernetes Node Agent Documentation=https://kubernetes.io/docs/ Wants=network-online.target After=network-online.target [Service] ExecStart=/usr/bin/kubelet Restart=always StartLimitInterval=0 RestartSec=10 [Install] WantedBy=multi-user.targetkubeadm配置文件mkdir -p /etc/systemd/system/kubelet.service.d cat <<EOF | tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf [Service] Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env EnvironmentFile=-/etc/sysconfig/kubelet ExecStart= ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS EOF自启动kubeletsystemctl enable --now kubeletmaster集群初始化kubeadm init \ --apiserver-advertise-address=192.168.1.111 \ --kubernetes-version v1.23.6 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=192.168.0.0/16复制文件夹mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config设置环境变量sed -i '$a # kubeconfig\nexport KUBECONFIG=/etc/kubernetes/admin.conf' /etc/profile && source /etc/profilenode复制文件夹mkdir -p $HOME/.kube cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config设置环境变量sed -i '$a # kubeconfig\nexport KUBECONFIG=/etc/kubernetes/kubelet.conf' /etc/profile && source /etc/profilemaster部署一个pod网络(calico)kubectl apply -f calico.yaml kubectl get pods -Anode加入集群(以终端输出为准,不可复制)Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.4.45:6443 --token jokbeq.logz5fixljdrna6r \ --discovery-token-ca-cert-hash sha256:16ba5133d2ca72714c4a7dd864a5906baa427dc53d8eb7cf6d890388300a052a # token过期怎么办 kubeadm token create --print-join-command kubeadm join 192.168.4.45:6443 --token l7smzu.ujy68m80prq526nh --discovery-token-ca-cert-hash sha256:16ba5133d2ca72714c4a7dd864a5906baa427dc53d8eb7cf6d890388300a052a master验证节点纳管kubectl get nodes给节点打标签kubectl label node node1 node-role.kubernetes.io/worker='' kubectl label node node2 node-role.kubernetes.io/worker=''dashboard部署master修改dashboard-v2.5.1.yaml文件:kubernetes-dashboard的Service,目标行前后如下(更改处见注释)--- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 nodePort: 30001 # 新增 nodePort: 30001 向外暴露端口 selector: k8s-app: kubernetes-dashboard type: NodePort # 新增 type: NodePort 暴露到外部访问 ---修改dashboard-v2.5.1.yaml文件:kubernetes-dashboard的Deployment,目标行前后如下(更改处见注释)kind: Deployment apiVersion: apps/v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s-app: kubernetes-dashboard template: metadata: labels: k8s-app: kubernetes-dashboard spec: securityContext: seccompProfile: type: RuntimeDefault containers: - name: kubernetes-dashboard image: kubernetesui/dashboard:v2.5.1 imagePullPolicy: Never # 修改 imagePullPolicy: Never 从本地拉取镜像 ports: - containerPort: 8443 protocol: TCP修改dashboard-v2.5.1.yaml文件:dashboard-metrics-scraper的Deployment,目标行前后如下(更改处见注释)apiVersion: apps/v1 metadata: labels: k8s-app: dashboard-metrics-scraper name: dashboard-metrics-scraper namespace: kubernetes-dashboard spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s-app: dashboard-metrics-scraper template: metadata: labels: k8s-app: dashboard-metrics-scraper spec: securityContext: seccompProfile: type: RuntimeDefault containers: - name: dashboard-metrics-scraper image: kubernetesui/metrics-scraper:v1.0.7 imagePullPolicy: Never # 新增 imagePullPolicy: Never 从本地拉取镜像 ports: - containerPort: 8000 protocol: TCP livenessProbe: httpGet: scheme: HTTP path: / port: 8000 initialDelaySeconds: 30 timeoutSeconds: 30 volumeMounts: - mountPath: /tmp创建 dashboard 相关的 namespace/service/deployment/pod等kubectl apply -f dashboard-v2.5.1.yaml 个人PC浏览器访问 kubernetes-dashboard地址https://192.168.1.111:30001master创建 ServiceAccount 并绑定默认 cluster-admin 管理员集群角色# 创建用户 kubectl create serviceaccount dashboard-admin -n kube-system # 用户授权 kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin # 获取用户 Token kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')参考链接官方社区-openEuler搭建k8s集群openEuler搭建k8s集群集群内网时间同步离线搭建k8s集群
  • [分享交流] openeuler相比于其他操作系统的优势有哪些?
    openeuler相比于其他操作系统的优势有哪些?
  • [openEuler] openEuler 制作驱动镜像文件
    随着板卡芯片不断更新,操作系统中的驱动可能不支持新的芯片,所以需要升级驱动。在所有的硬件中,raid卡驱动是一种比较特殊的驱动,如果操作系统不支持raid卡,在安装系统过程中就无法识别raid卡下的硬盘,导致系统无法正常安装。这种情况下,我们可以通过制作raid卡驱动镜像文件,辅助升级系统驱动,达到安装系统的目的。本文主要以raid卡驱动megaraid_sas为例。1. 安装依赖软件包dnf install -y tar rpm-build createrepo genisoimage2. 下载驱动包,进行解压wget cid:link_0tar -xf MR_LINUX_DRIVER_7.22-07.722.02.00-2.tgz3. 进入源码包目录,安装驱动源码包cd kmod_srpm/rpm -ivh kmod-megaraid_sas-07.722.02.00-2.src.rpm4. 查看 megaraid_sas.spec 文件ls -l /root/rpmbuild/SPECS/megaraid_sas.spec5. 编译spec文件,生成驱动rpm包    【注意:编译环境和架构要求和待安装操作系统相同】rpmbuild -ba /root/rpmbuild/SPECS/megaraid_sas.spec6. 创建制作目录,将编译好的驱动软件包复制到目录下  mkdir -p driver/rpms/aarch64       cp /root/rpmbuild/RPMS/aarch64/kmod-megaraid_sas-07.722.02.00-2.aarch64.rpm driver/rpms/aarch64/       cp /root/rpmbuild/RPMS/aarch64/kmod-megaraid_sas-07.722.02.00-2.aarch64.rpm driver7. 创建rhdd3文件echo "Driver Update Disk version 3" > driver/rhdd3 8. 使用createrepo命令创建repodatacreaterepo --pretty driver/rpms/aarch64/createrepo --pretty driver9. 制作驱动镜像文件mkisofs -R -V "Driver" -o megaraid_sas.iso driver10. 验证驱动镜像文件      驱动镜像文件可以被正常挂载识别