安装指南 - huawei cloud1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍...

72
鲲鹏虚拟化解决方案 安装指南 文档版本 05 发布日期 2020-09-28 华为技术有限公司

Upload: others

Post on 16-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

鲲鹏虚拟化解决方案

安装指南

文档版本 05

发布日期 2020-09-28

华为技术有限公司

Page 2: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

版权所有 © 华为技术有限公司 2021。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 i

Page 3: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

目 录

1 Docker 安装指南(CentOS 7.6)........................................................................................... 11.1 介绍.............................................................................................................................................................................................. 11.2 环境要求......................................................................................................................................................................................21.3 获取源码......................................................................................................................................................................................31.4 安装.............................................................................................................................................................................................. 41.5 运行和验证................................................................................................................................................................................. 71.6 更多资源......................................................................................................................................................................................81.6.1 常用命令.................................................................................................................................................................................. 91.6.2 卸载 Docker............................................................................................................................................................................ 91.6.3 寻找适配鲲鹏架构的 Docker 镜像................................................................................................................................. 101.6.4 制作适配鲲鹏架构的 Docker 镜像的一般方法............................................................................................................13

2 KVM 虚拟机 安装指南(CentOS 7.6).................................................................................152.1 介绍............................................................................................................................................................................................ 152.2 环境要求................................................................................................................................................................................... 162.3 配置安装环境...........................................................................................................................................................................182.3.1 安装虚拟化相关组件.......................................................................................................................................................... 182.3.2 (可选)升级 QEMU......................................................................................................................................................... 192.3.3 (可选)升级 libvirt........................................................................................................................................................... 232.3.4 验证环境................................................................................................................................................................................ 252.4 安装............................................................................................................................................................................................ 262.4.1 创建第一个虚拟机.............................................................................................................................................................. 262.4.2 配置虚拟机........................................................................................................................................................................... 282.4.3 克隆虚拟机........................................................................................................................................................................... 302.5 运行和验证............................................................................................................................................................................... 302.5.1 启动虚拟机........................................................................................................................................................................... 302.5.2 常用命令................................................................................................................................................................................ 30

3 Calico 安装指南(CentOS 7.6)........................................................................................... 323.1 介绍............................................................................................................................................................................................ 323.2 环境要求................................................................................................................................................................................... 333.3 配置安装环境...........................................................................................................................................................................343.4 安装 Calico 组件..................................................................................................................................................................... 353.4.1 Calico 节点部署................................................................................................................................................................... 35

鲲鹏虚拟化解决方案安装指南 目 录

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 ii

Page 4: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

3.4.1.1 下载 yaml 配置文件........................................................................................................................................................ 353.4.1.2 部署安装............................................................................................................................................................................ 353.4.2 Calicoctl 工具安装.............................................................................................................................................................. 353.4.2.1 容器化安装........................................................................................................................................................................ 363.4.2.2 二进制安装........................................................................................................................................................................ 363.5 故障排除................................................................................................................................................................................... 373.6 参考............................................................................................................................................................................................ 383.6.1 Calico 部署 yaml 文件....................................................................................................................................................... 383.6.2 Calicoctl 部署 yaml 文件.................................................................................................................................................. 50

4 Open vSwitch 安装指南(CentOS 7.6)............................................................................ 534.1 介绍............................................................................................................................................................................................ 534.2 环境要求................................................................................................................................................................................... 544.3 配置安装环境...........................................................................................................................................................................554.4 安装 Open vSwitch................................................................................................................................................................554.4.1 源码包安装........................................................................................................................................................................... 564.4.2 RPM 包安装.......................................................................................................................................................................... 584.5 功能验证................................................................................................................................................................................... 594.5.1 组件启动................................................................................................................................................................................ 594.5.1.1 默认配置启动....................................................................................................................................................................594.5.1.2 自定义启动........................................................................................................................................................................ 604.5.2 功能验证................................................................................................................................................................................ 604.6 故障排除................................................................................................................................................................................... 60

5 K8s topology manager patch 安装指南(CentOS 7.6)................................................ 625.1 介绍............................................................................................................................................................................................ 625.2 环境要求................................................................................................................................................................................... 635.3 安装............................................................................................................................................................................................ 655.4 配置............................................................................................................................................................................................ 665.5 部署集群................................................................................................................................................................................... 665.6 故障排除................................................................................................................................................................................... 67

A 修订记录................................................................................................................................... 68

鲲鹏虚拟化解决方案安装指南 目 录

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 iii

Page 5: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

1 Docker 安装指南(CentOS 7.6)

1.1 介绍

1.2 环境要求

1.3 获取源码

1.4 安装

1.5 运行和验证

1.6 更多资源

1.1 介绍

简要介绍

Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如同一个货轮,每一个在操作系统基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的App),这也就是基于Docker的PaaS产品的原型。

开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。

开发语言:Shell

一句话描述:开源的应用容器引擎

建议的版本

表 1-1 建议的软件版本

软件 版本

Docker docker-18.09.8及以上

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 1

Page 6: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

1.2 环境要求

硬件要求

表 1-2 硬件要求

类别 项目 要求

硬件 服务器 TaiShan 200服务器(型号2280)

CPU 鲲鹏920处理器

网卡 板载电口网卡TM210

操作系统和安装要求

表 1-3 操作系统和软件要求

类型 获取方法

操作系统 操作系统版本:CentOS Linux release7.6.1810(AltArch)下载链接: http://isoredirect.centos.org/altarch/7/isos/aarch64/

操作系统软件选择(softwareselection)

software selection

Server with GUI

Docker 安装版本 docker-18.09.8

网络需求 ● DockerHub地址(https://hub.docker.com/)网络可达

● Docker下载地址(https://download.docker.com/linux/static/stable/aarch64/)网络可达

说明Docker默认打开nf_conntrack服务,关闭该服务时无法安装,请确保打开。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 2

Page 7: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

1.3 获取源码

注意

采用静态包而非yum install的方式,是因为默认yum源的Docker版本过旧,容易出错且出现问题难以定位。

步骤1 进入Docker官方下载地址,查看Docker静态安装包列表。

下载地址:https://download.docker.com/linux/static/stable/aarch64/

步骤2 选择所需版本的安装包并下载至本地。如图1-1所示。

注意

在离线场景下,可以先通过网络下载安装包再传入目标主机的目标目录。

wget https://download.docker.com/linux/static/stable/aarch64/docker-18.09.8.tgz

图 1-1 下载静态包

如图 成功下载的Docker安装包所示,表示下载成功。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 3

Page 8: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 1-2 成功下载的 Docker 安装包

----结束

1.4 安装

获取 Docker 静态包及组件

步骤1 确认物理机的操作系统版本。cat /etc/redhat-release

步骤2 将静态安装包在本地解压。解压后本地文件夹下会多一个docker文件夹, 内容如图1-3所示。tar xvpf docker-18.09.8.tgz

图 1-3 解压后的安装包

步骤3 将文件夹中所有内容拷贝至“/usr/bin”文件夹下。cp -p docker/* /usr/bin

----结束

配置前的环境准备

步骤1 为使Docker可以正常使用,还需要关闭SELinux及防火墙。setenforce 0systemctl stop firewalldsystemctl disable firewalld

此时只是暂时禁用SELinux,如果要长期禁用SELinux,还需要修改/etc/selinux/config文件。

将SELINUX=enforcing改为SELINUX=permissive或disabled,才能长期有效。

步骤2 重启服务器,使修改的配置文件生效。

----结束

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 4

Page 9: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

启动 docker.service 服务

步骤1 整段执行如下命令,配置docker.service文件。

[Unit]Description=Docker Application Container EngineDocumentation=http://docs.docker.comAfter=network.target docker.socket[Service]Type=notifyEnvironmentFile=-/run/flannel/dockerWorkingDirectory=/usr/local/binExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false --log-opt max-size=1gExecReload=/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=infinityLimitNPROC=infinityLimitCORE=infinity# Uncomment TasksMax if your systemd version supports it.# Only systemd 226 and above support this version.#TasksMax=infinityTimeoutStartSec=0# set delegate yes so that systemd does not reset the cgroups of docker containersDelegate=yes# kill only the docker process, not all processes in the cgroupKillMode=processRestart=on-failure[Install]WantedBy=multi-user.targetEOF

服务文件就已经成功生成。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 5

Page 10: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

说明

拷贝上文代码时请注意粘贴在终端的样式,参考样式如图1-4。

图 1-4 粘贴在终端中的样式

步骤2 随后启动相关服务,输出Docker的状态。systemctl daemon-reloadsystemctl status dockersystemctl restart dockersystemctl status dockersystemctl enable dockersystemctl status docker

说明

第一遍运行systemctl status docker的时候Docker的加载状态为inactive (dead)状态,这是因为刚刚配置的docker.service服务尚未启动。

步骤3 查询Docker版本。docker version

如图1-5所示,表示Docker安装成功。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 6

Page 11: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 1-5 docker version

----结束

1.5 运行和验证步骤1 运行程序,验证Docker的安装结果。

docker run hello-world

输出结果如图1-6所示。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 7

Page 12: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 1-6 docker hello world

可以看出Docker从DockerHub上拉取了hello-world镜像,运行并输出了相关信息,表示Docker安装成功。

步骤2 查看本机所有容器的Docker服务。docker ps -a

输出结果如图1-7所示。

图 1-7 容器已创建

可以看到对应容器已经创建,Docker服务完全可用。

说明

在刚刚安装Docker之后,本地镜像库为空,执行docker run hello-world, 可以验证Docker从DockerHub上拉取镜像的功能、Docker通过镜像创建容器的功能。

----结束

1.6 更多资源

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 8

Page 13: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

1.6.1 常用命令

表 1-4 Docker 常用命令列表

命令行 功能描述

docker run --network host 容器和主机共享网络

docker pull ubuntu:17.10 拉取17.10的镜像

docker run -p15555-15579:15555-15579

映射一段范围的端口(host:guest)

docker port container 查看当前映射的端口配置

docker inspect container 查看容器的底层信息

docker info 查看容器配置

docker ps (-a) 查看容器列表

docker images 查看容器镜像

docker run -v /root/data/:/home/data/

把宿主端的“/root/data”目录映射进容器里面的“/home/data”,可用于数据传输

docker commit812a997f614a(container id)ubuntu:update(image name:tag)

将修改后的镜像保存成一个新的镜像

docker exportcbe3cb7799ed(container id) >update.tar

基于某个容器导出一个新镜像

docker import - update < update.tar 导入一个镜像

docker save *****(image id)>ubuntu_17.10.tar

将一个镜像保存为本地文件

docker load < ubuntu_17.10.tardocker tag *****(image id) Ubuntu:17.10

将一个本地打包的镜像文件加载至容器引擎

docker cp HOST_PATH <CONTAINER-NAME>:/PATH

将文件拷入容器

docker run -it -d -p 5900:5900 -p15555-15577:15555-15577 --namemesa0 --privileged -v /root/share:/root/share ubuntu:17.10 /bin/bash

启动示例

1.6.2 卸载 Docker若将环境重置为安装Docker前的状态,需要进行以下操作步骤。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 9

Page 14: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤1 删除所有正在运行的容器。docker rm -vf $(docker ps -a -q)

说明

如需备份正在运行的容器,需要使用docker commit命令保存成镜像。

docker commit -m "<message>" -a "<author>" <容器ID> <镜像名>:<tag>

关于镜像的备份,下面将会说明。

步骤2 删除本地所有镜像。docker rmi -f $(docker images -a -q)

说明

如需备份Docker镜像到本地文件,需要使用docker save命令将镜像保存为 .rar压缩文件。

docker save -o <文件名>.rar <镜像名>:<tag>

步骤3 需要删除的“/usr/bin”中的Docker组件。

1. 查询“/usr/bin”中的Docker组件。ll

2. 依次删除这些组件。rm -f /usr/bin/<组件名>

步骤4 重置docker.service配置文件。

1. 将docker.service文件内容清空。echo '' > /usr/lib/systemd/system/docker.service

2. 重新加载daemon服务。systemctl daemon-reload

已完成Docker卸载。

----结束

1.6.3 寻找适配鲲鹏架构的 Docker 镜像步骤1 打开Docker镜像库。

https://hub.docker.com/

图 1-8 Docker Hub

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 10

Page 15: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤2 在搜索框一栏搜索需要的镜像,在左侧的“Filters”选项最下面找到关于架构的选项。

图 1-9 搜索镜像

步骤3 发现“Architectures”选项。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 11

Page 16: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 1-10 选择镜像架构

步骤4 选择ARM 64。

图 1-11 适配 ARM64 架构的镜像

此时显示镜像都带有ARM 64标签,表明可以适配鲲鹏架构服务器。

步骤5 单击某个镜像页面。

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 12

Page 17: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 1-12 镜像下载页面

右侧命令显示在Docker上下载该镜像的命令。

下方tags表示可下载镜像的标签。

----结束

1.6.4 制作适配鲲鹏架构的 Docker 镜像的一般方法

说明

通过docker commit命令制作适配的Docker镜像,以httpd为例。

前提条件

在鲲鹏架构的主机上已有Docker服务运行。

操作步骤

步骤1 启动一个CentOS的Docker容器。docker run -itd -p 5000:80 --name xx --privileged centos:latest init

步骤2 进入该容器中。docker exec -it xx /bin/bash

步骤3 安装httpd服务。yum -y install httpd.aarch64

步骤4 启动httpd服务。systemctl enable httpdsystemctl start httpd

步骤5 此时该容器就是可以在鲲鹏主机上运行的,一个安装了httpd服务的CentOS容器,通过docker commit将其导为镜像。docker commit -m “message” -a “author” <container ID> <image name>:<tag>

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 13

Page 18: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

通过此命令创建的镜像就是一个自带httpd服务的Docker镜像。

----结束

鲲鹏虚拟化解决方案安装指南 1 Docker 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 14

Page 19: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

2 KVM 虚拟机 安装指南(CentOS 7.6)

2.1 介绍

2.2 环境要求

2.3 配置安装环境

2.4 安装

2.5 运行和验证

2.1 介绍

简要介绍

KVM实际是Linux内核提供的虚拟化架构,可将内核直接充当hypervisor来使用。

KVM包含一个内核模块kvm.ko用来实现核心虚拟化功能,以及一个和处理器强相关的模块如kvm-amd.ko。KVM本身不实现任何模拟,仅仅是暴露了一个/dev/kvm接口,这个接口可被宿主机用来主要负责vCPU的创建,虚拟内存的地址空间分配,vCPU寄存器的读写以及vCPU的运行。有了KVM以后,guest os的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。但KVM的kvm.ko本身只提供了CPU和内存的虚拟化,所以它必须结合QEMU才能构成一个完整的虚拟化技术。

KVM实现了CPU和内存的虚拟化,但KVM并不能模拟其他设备,还必须有个运行在用户空间的工具才行。KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,QEMU模拟IO设备(网卡,磁盘等),对其进行了修改,最后形成了QEMU-KVM。

在QEMU-KVM中,KVM运行在内核空间,QEMU运行在用户空间,实际模拟创建、管理各种虚拟硬件,QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但KVM不能虚拟其他硬件设备,因此QEMU还有模拟IO设备(磁盘,网卡,显卡等)的作用,KVM加上QEMU后就是完整意义上的服务器虚拟化。

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 15

Page 20: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

建议的版本

表 2-1 建议的版本

软件 建议版本

QEMU qemu-2.12.0及以上版本

libvirt libvirt-4.5.0及以上版本

2.2 环境要求

硬件要求

表 2-2 硬件要求

类别 项目 要求

硬件 服务器 TaiShan 200服务器(型号2280)

CPU 鲲鹏920处理器

RAID卡 Avago 3508

BIOS Advanced→MISC Config→Support Smmu

Enabled

Advanced→PCIe Config→SRIOV

Enabled

注意

Avago 3408iMR RAID卡不支持虚拟化功能。

操作系统要求

表 2-3 操作系统要求

项目 要求

CentOS CentOS 7.6

操作系统推荐安装Infrastructure Server或者Server with GUI,如图2-1所示。

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 16

Page 21: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 2-1 安装 Server with GUI

获取软件包

表 2-4 获取软件包

软件包名称 获取方法

qemu-4.0.0.tar.xz

● 在线执行wget https://download.qemu.org/qemu-4.0.0.tar.xz命令下载源码包。

● 离线

1. 在可以访问外网的机器上访问https://download.qemu.org/qemu-4.0.0.tar.xz下载源码包。

2. 将下载好的源码包拷贝至目标机器。

libvirt-5.6.0-1.fc30.src.rpm

以libvirt-5.6.0为例。

● 在线执行wget https://libvirt.org/sources/libvirt-5.6.0-1.fc30.src.rpm命令,下载源码rpm包。

● 离线

1. 在可以访问外网的机器上访问https://libvirt.org/sources/libvirt-5.6.0-1.fc30.src.rpm下载源码rpm包。

2. 将下载好的源码包拷贝至目标机器。

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 17

Page 22: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

2.3 配置安装环境

2.3.1 安装虚拟化相关组件

(可选)配置本地源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 将操作系统镜像文件CentOS-7-aarch64-Everything-1810.iso拷贝到每台服务器的“/root”目录下。

步骤2 镜像文件挂载。

1. 将“/root”目录下的CentOS操作系统对应iso文件挂载到“/mnt/repo”目录下。mount /root/CentOS-7-aarch64-Everything-1810.iso /mnt/repo -o loop

说明

该操作单次生效,重启后失效。

2. (可选)配置开机启动自动挂载镜像。

a. 打开fstab文件。vi /etc/fstab

b. 编辑fstab文件,在文件末尾添加如下信息:/root/CentOS-7-aarch64-Everything-1810.iso /mnt/repo iso9660 loop 0 0

c. 保存并退出fstab文件。

步骤3 添加本地源文件。

1. 进入“/etc/yum.repos.d”目录。cd /etc/yum.repos.d

说明

此时,建议将此目录下的*.repo文件移到任意其他备份目录下。

2. 创建local.repo文件。

a. 打开local.repo文件。vi local.repo

b. 编辑local.repo文件,在local.repo文件中添加如下内容:[local] name=local repo baseurl=file:///mnt/repo enabled=1gpgcheck=0

c. 保存并退出local.repo文件。

步骤4 生效本地源。yum clean allyum makecacheyum list

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 18

Page 23: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

----结束

安装虚拟化相关组件

说明

本章节的操作需要外网可用或已配置本地源。

步骤1 安装虚拟化相关组件。yum -y install qemu* libvirt* AAVMF virt-install

----结束

创建 qemu-kvm 软链接

步骤1 创建qemu-kvm软链接。ln -sv /usr/libexec/qemu-kvm /usr/bin/

----结束

2.3.2 (可选)升级 QEMU说明

默认无需升级,建议使用QEMU 2.12.0版本。如有额外诉求,请按照如下方法升级,升级可能引入其他权限或功能问题。

安装依赖包

说明

本章节的操作需要外网可用或已配置本地源。

安装依赖包。

yum -y install glib2-devel zlib-devel pixman-devel libaio-devel

编译安装

说明

QEMU默认安装在“/usr/local”下,源码包的下载请参见获取软件包。

使用的是 qemu-4.0.0版本。该arm版本暂不支持虚拟机热迁移功能(支持冷迁移),若有虚拟机热迁移需求,可根据openEuler中的patch包进行补丁升级,链接如下:

https://gitee.com/src-openeuler/qemu/tree/openEuler-20.03-LTS/

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 19

Page 24: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤1 解压并进入QEMU目录。tar -xvf qemu-4.0.0.tar.xzcd qemu-4.0.0

步骤2 配置安装。./configure --target-list=aarch64-softmmu --enable-linux-aio

说明

此处命令也可如下图中只执行./configure,后面添加参数可加速编译,执行结果均可参考下图。

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 20

Page 25: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

make[-j ]

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 21

Page 26: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

make install

步骤3 添加lib库。

1. 添加lib库路径。vim /etc/ld.so.confinclude /usr/local/lib

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 22

Page 27: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

2. 使lib库更改生效。ldconfig

步骤4 检验QEMU版本。qemu-img --version

----结束

2.3.3 (可选)升级 libvirt

须知

如果对图形化界面没有诉求,能够使用命令行进行虚拟化相关操作,建议使用系统自带的libvirt-4.5.0。由于libvirt-4.5.0代码存在bug,所以在使用virt-manager时会触发一些报错,例如:internal error: Socket 6378 can't be handled (max socket is 4095),如果一定要用virt-manager操作,请按照如下章节安装libvirt-4.7.0或更高版本。

安装 edk2● 在线安装

执行如下命令在线安装edk2,如图2-2所示。wget https://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repoyum -y install edk2.git-aarch64

图 2-2 在线安装 edk2

● 离线安装

在有外网的环境下访问https://www.kraxel.org/repos/jenkins/edk2/,获取rpm包并拷贝至目标服务器系统相应位置。执行如下命令离线安装edk2,如图2-3所示。rpm -ivh edk2.git-aarch64*.rpm

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 23

Page 28: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 2-3 离线安装 edk2

安装依赖包

说明

本章节的操作需要外网可用或已配置本地源。

步骤1 安装依赖包。yum -y install libxml2-devel readline-devel ncurses-devel libtasn1-devel gnutls-devel libattr-devel libblkid-devel augeas systemd-devel libpciaccess-devel yajl-devel sanlock-devel libpcap-devel libnl3-devel libselinux-devel dnsmasq radvd cyrus-sasl-devel libacl-devel parted-devel device-mapper-devel xfsprogs-devel librados2-devel librbd1-devel glusterfs-api-devel glusterfs-devel numactl-devel libcap-ng-devel fuse-devel netcf-devel libcurl-devel audit-libs-devel systemtap-sdt-devel nfs-utils dbus-devel scrub numad

----结束

编译安装

说明

源码包的下载请参见获取软件包,本章以libvirt-5.6.0为例。该Arm版本暂不支持虚拟机热迁移功能(支持冷迁移),若有虚拟机热迁移需求,可根据openEuler中的patch包进行补丁升级,链接如下:https://gitee.com/src-openeuler/libvirt/tree/openEuler-20.03-LTS/

步骤1 安装src.rpm源码包。rpm -i libvirt-5.6.0-1.fc30.src.rpm

步骤2 生成rpm包。cd /root/rpmbuild/SPECS/rpmbuild -ba libvirt.spec

步骤3 安装rpm包。cd /root/rpmbuild/RPMS/aarch64/yum -y install *.rpm

步骤4 修改配置文件。

1. 打开qemu.conf文件。vim /etc/libvirt/qemu.conf

2. 找到修改位置,如下图所示:

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 24

Page 29: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

3. 添加如下配置。nvram = ["/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]

4. 保存退出。:wq

步骤5 重启libvirtd服务。service libvirtd restart

步骤6 关闭SELinux。setenforce 0

----结束

2.3.4 验证环境步骤1 重启libvirt服务。

service libvirtd restart

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 25

Page 30: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤2 查看版本信息。virsh version

若升级libvirt,那么如下图所示。

----结束

2.4 安装

2.4.1 创建第一个虚拟机

步骤1 启动libvertd服务并设置开机自启。systemctl start libvirtdsystemctl enable libvirtd

步骤2 创建存储池。

1. 创建存储池目录,配置目录权限。mkdir -p /home/kvm/imageschown root:root /home/kvm/imageschmod 755 /home/kvm/images

2. 定义一个存储池并绑定目录,建立基于文件夹的存储池、激活、设置开机启动。virsh pool-define-as StoragePool --type dir --target /home/kvm/imagesvirsh pool-build StoragePoolvirsh pool-start StoragePoolvirsh pool-autostart StoragePool

3. 查看存储池信息。virsh pool-info StoragePoolvirsh pool-list

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 26

Page 31: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤3 创建虚拟机磁盘空间。

1. 创建卷 。创建名称为1.img,所在存储池为StoragePool,容量为50G,初始分配1G,文件格式类型为qcow2, 硬盘文件的格式必须为qcow2格式。virsh vol-create-as --pool StoragePool --name 1.img --capacity 50G --allocation 1G --format qcow2

2. 查看卷信息。virsh vol-info /home/kvm/images/1.img

步骤4 创建虚拟机。

1. 创建虚拟机vm1,虚拟机分配4个CPU、8G内存,使用1.img作为磁盘空间,将iso文件拷贝/xxx(非/root)路径下,安装CentOS7.6系统。brctl addbr br1virt-install --name=vm1 --vcpus=4 --ram=8192 --disk path=/home/kvm/images/1.img,format=qcow2,size=50,bus=virtio --cdrom /xxx/CentOS-7-aarch64-Everything-1810.iso --network bridge=br1,model=virtio --force --autostart

2. 安装虚拟机的操作系统。

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 27

Page 32: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

3. 配置所有带有"!"的选项,输入选项对应的序号进入配置,按照指示完成配置,然后按"b"开始安装。

4. 系统安装完成后,进入登录界面。

----结束

2.4.2 配置虚拟机本章节介绍通过执行virsh edit vmx命令编辑虚拟机配置文件的操作方法,其中vmx是虚拟机名称。

绑定 CPU虚拟机的CPU绑定,是指将VM的vcpu绑定到同一个NUMA节点的物理CPU上。

以将虚拟机的4个vcpu分别绑定到0/1/2/3物理核为例,介绍虚拟机CPU绑定的配置方法。

步骤1 编辑配置文件。virsh edit vmx

步骤2 在配置文件中添加如下CPU配置信息:<cputune><vcpupin vcpu='0' cpuset='0'/><vcpupin vcpu='1' cpuset='1'/><vcpupin vcpu='2' cpuset='2'/><vcpupin vcpu='3' cpuset='3'/><emulatorpin cpuset='0-3'/></cputune>

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 28

Page 33: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

经过上述的配置后,虚拟机的vcpu线程就会固定运行在指定的主机的物理CPU上。

步骤3 保存并退出配置文件。

步骤4 查看CPU定选效果。virsh vcpuinfo vmx

----结束

绑定内存

将内存绑定到与CPU在同一NUMA节点上。

步骤1 编辑配置文件。virsh edit vmx

步骤2 在配置文件中,添加如下内存配置信息:<numatune><memory mode='strict' nodeset='0'/></numatune>

步骤3 保存并退出配置文件。

----结束

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 29

Page 34: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

2.4.3 克隆虚拟机

步骤1 关闭虚拟机vm1,执行virt-install软件包中的virt-clone命令克隆出虚拟机vm10。virt-clone -o vm1 -n vm10 -f /home/kvm/images/10.img

其中,-o选项表示源虚拟机,-n选项表示新创建的虚拟机,-f表示新创建的虚拟机使用宿主机上的文件作为镜像文件。

说明

以上命令执行完成后,名为vm10的虚拟机就创建成功了,分配给vm10的cpu、内存、硬盘、网络都和vm1一致,vm10的CPU和网络分配需要单独配置。

步骤2 查看创建的虚拟机状态。virsh list --all

步骤3 修改虚拟机主机名。

由于克隆的虚拟机具有和vm1一样的主机名和IP,因此需要登录vm10,执行如下命令修改主机名。

hostnamectl --static set-hostname vm10

步骤4 修改虚拟机IP。vim /etc/sysconfig/network-scripts/ifcfg-ens3

----结束

2.5 运行和验证

2.5.1 启动虚拟机

● 启动vm1。virsh start vm1

● 编辑vm1的配置文件。virsh edit vm1

● 关闭vm1。virsh shutdown vm1

2.5.2 常用命令

命令行 功能描述

virsh list --all 查看所有虚拟机

virsh undefine vm2 删除虚拟机

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 30

Page 35: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

命令行 功能描述

virsh vol-delete --poolStoragePool --vol 2.img

删除img

virsh pool-destroy vmfspoolvirsh pool-undefine vmfspoolvirsh pool-delete vmfspool

删除存储池

brctl addbr br1 创建网桥,br1是网桥名称

brctl addif br1 eth0 将网桥br1绑定到网口eth0上,绑定的网口根据实际情况确认,虚拟机需要用到哪个网口就用哪个网口

ifconfig br1 192.168.1.100 配置网桥IP地址

说明

网桥配置为临时添加,重启后,配置会失效。永久设置要修改相关配置文件,如下所示。

鲲鹏虚拟化解决方案安装指南 2 KVM 虚拟机 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 31

Page 36: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

3 Calico 安装指南(CentOS 7.6)

3.1 介绍

3.2 环境要求

3.3 配置安装环境

3.4 安装Calico组件

3.5 故障排除

3.6 参考

3.1 介绍

简要介绍

Calico组件是Tigera公司以Apache 2.0开源协议开源的网络和网络解决方案组件,可用于容器、虚拟机、原生宿主机侧负载。该组件对于众多平台均有支持,包含Kubernetes,OpenShift,Docker EE,OpenStack和裸金属服务等。

Calico项目目标是将灵活的网络功能和安全性策略实施相结合,以提供具有原生Linux内核性能和云原生可扩展性的解决方案。对于开发人员和集群运营管理来说,不论是在公有云环境还是在本地环境,不论是单机节点还是集群环境,Calico都提供了一致的操作经验和功能工具集。

本章主要介绍Calico组件的基本架构、原理及特性。

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 32

Page 37: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 3-1 Calico 组件架构

Calico组件主要架构由Felix、Confd、BIRD组成。

● Felix是负责Calico Node运行并作为每个节点Endpoint端点的守护程序,它负责管理当前主机中的Pod信息,与集群etcd服务交换集群Pod信息,并组合路由信息和ACL策略。

● Confd是负责存储集群etcd生成的Calico配置信息,提供给BIRD层运行时使用。

● BIRD(BIRD Internet Routing Daemon)是核心组件,Calico中的BIRD特指BIRDClient和BIRD Route Reflector,负责主动读取Felix在本机上设置的路由信息,并通过BGP广播协议在数据中心中进行分发路由。

此外,etcd组件是Calico组件运行的依赖组件,需事先在集群中部署etcd服务,或复用Kubernetes的etcd;Calico官方也提供了calicoctl管理工具,用于与Calico Node进行状态确认、状态配置等操作。

安装Calico软件采用容器镜像方式进行安装。

建议的版本

建议使用的版本为“3.13.1”。

3.2 环境要求本章以Kubernetes容器编排引擎平台为例,介绍Calico软件运行的环境要求。

硬件平台要求

硬件平台版本要求如表3-1所示。

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 33

Page 38: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

表 3-1 硬件平台要求

项目 说明

CPU 鲲鹏920处理器

磁盘 >10GB可用空间

网络 推荐Ethernet-10GE及以上网络

软件平台要求

软件平台版本要求如表3-2所示。

表 3-2 操作系统要求

项目 版本 下载地址

CentOS 7.6 https://www.centos.org/download/

Kernel 4.14.0 包含在操作系统镜像中

3.3 配置安装环境在安装部署Calico组件之前,必须进行Kubernetes组件的初始化。

步骤1 初始化启动Kubernetes主节点。

说明

本节以10.244.0.0/16网段作为网络驱动CIDR并使用默认网关作为网络广播地址为例,若用户需指定其他网段,命令需要进行对应的修改。

$ kubeadm init --pod-network-cidr=10.244.0.0/16

初始化完成后,启动完成后查看Kubernetes集群Pods信息显示正常,Node状态处于NotReady状态,备份好输出中的kubeadm join命令备用,下一步进行网络平面部署。

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 34

Page 39: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤2 配置主节点环境变量。$ mkdir -p $HOME/.kube$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config$ chown $(id -u):$(id -g) $HOME/.kube/config

----结束

3.4 安装 Calico 组件

3.4.1 Calico 节点部署

3.4.1.1 下载 yaml 配置文件

详见3.6.1 Calico部署yaml文件章节,保存内容为calico.yaml文件。

3.4.1.2 部署安装

使用kubectl部署集群网络组件。

$ kubectl apply -f calico.yaml

部署完成后如下图所示,coredns服务已处于Running状态,node状态处于Ready状态。

3.4.2 Calicoctl 工具安装

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 35

Page 40: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

3.4.2.1 容器化安装

下载 yaml 配置文件

详见3.6.2 Calicoctl部署yaml文件章节,保存内容为calicoctl.yaml文件。

安装

使用kubectl部署calicoctl组件,并设置快捷操作命令。

$ kubectl apply -f calicoctl.yaml$ alias calicoctl="kubectl exec -i -n kube-system calicoctl -- /calicoctl"

使用注意

1. 容器Calicoctl工具无法使用calicoctl node相关命令进行节点操作,节点操作命令需使用部署在被操作节点的二进制Calicoctl工具进行操作。

2. 容器Calicoctl工具使用yaml文件新增/修改/删除配置等需要进行文件读取的相关操作时,需将命令如下例所示进行一定修改,将文件内容以stdin模式输入。$ calicoctl apply -f - < bgp.yaml

3. 使用容器Calicoctl工具时,需注意是否与二进制版本命令冲突。

3.4.2.2 二进制安装

下载二进制软件包

版本归档地址:https://github.com/projectcalico/calicoctl/releases/

下载版本链接:https://github.com/projectcalico/calicoctl/releases/download/v3.14.1/calicoctl-linux-arm64

配置工具连接 Kubernetes API datastore

以calicoctl get nodes命令为例,二进制版本calicoctl工具可通过以下两种方式完成与Kubernetes集群API datastore的连接。

● 方法一:Kubernetes命令行配置$ DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl get nodes

● 方法二:使用环境变量$ export DATASTORE_TYPE=kubernetes$ export KUBECONFIG=~/.kube/config$ calicoctl get nodes

使用注意

1. 二进制Calicoctl工具使用yaml文件新增/修改/删除配置等需要进行文件读取的相关操作时,无需将文件内容以stdin模式输入。$ calicoctl apply -f bgp.yaml

2. 使用二进制Calicoctl工具时,需注意是否与容器版本命令冲突。

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 36

Page 41: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

3.5 故障排除

问题一:K8S 部署 Calico 后显示 Calico-node 处于 Running 但一直无法 Ready

现象描述:

K8S部署Calico后显示Calico-node处于Running但一直无法Ready。

可能原因:

如下图所示,查看Docker logs发现一直在进行dataplane updates操作,resync同步始终无法建立连接;此时在Master节点上使用calicoctl工具查询node信息,发现有部分节点存在网络双平面,而calico组件部署时一般默认采用AUTO_DETECTION来发现BGP网络接口,在这些节点选错了对外网络接口,因此导致了网络无法互通。

处理步骤:

建议采用nodeSelector + IP_AUTODETECTION_METHOD结合的方式,区分这些节点,来实现BGP网络接口的手动识别。

问题二:K8S 部署 Calico 后运行业务节点网络中断

现象描述:

K8S部署Calico后运行业务节点网络中断。

可能原因:

排查环境网络平面是否有采用1822网卡。

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 37

Page 42: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

Calico组件默认使用IPIP(IP Tunnel模式),而1822网卡固件版本不支持IP隧道报文的校验和卸载功能,以及TSO功能;如果网卡使能发送方向校验和卸载功能,以及TSO功能时,如果系统发送IP隧道报文,会导致网卡功能性异常,导致网卡硬件不从主机侧取包发往网络侧,驱动侧报TX timeout。

具体体现为业务网络中断,与网关断开连接,只有重启才能够恢复正常使用。

处理步骤:

建议首先排查网卡,若为1822网卡,建议使用ethtool关闭TX方向校验和卸载。

ethtool -K <eth-port> tx off

3.6 参考

3.6.1 Calico 部署 yaml 文件---# Source: calico/templates/calico-config.yaml# This ConfigMap is used to configure a self-hosted Calico installation.kind: ConfigMapapiVersion: v1metadata:name: calico-confignamespace: kube-systemdata:# Typha is disabled.typha_service_name: "none"# Configure the backend to use.calico_backend: "bird"# Configure the MTU to use for workload interfaces and the# tunnels. For IPIP, set to your network MTU - 20; for VXLAN# set to your network MTU - 50.veth_mtu: "1440"

# The CNI network configuration to install on each node. The special# values in this config will be automatically populated.cni_network_config: |-{"name": "k8s-pod-network","cniVersion": "0.3.1","plugins": [{"type": "calico","log_level": "info","datastore_type": "kubernetes","nodename": "__KUBERNETES_NODE_NAME__","mtu": __CNI_MTU__,"ipam": {"type": "calico-ipam"},"policy": {"type": "k8s"},"kubernetes": {"kubeconfig": "__KUBECONFIG_FILEPATH__"}},{"type": "portmap","snat": true,"capabilities": {"portMappings": true}},{

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 38

Page 43: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

"type": "bandwidth","capabilities": {"bandwidth": true}}]}

---# Source: calico/templates/kdd-crds.yaml

apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: bgpconfigurations.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: BGPConfigurationplural: bgpconfigurationssingular: bgpconfiguration

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: bgppeers.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: BGPPeerplural: bgppeerssingular: bgppeer

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: blockaffinities.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: BlockAffinityplural: blockaffinitiessingular: blockaffinity

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: clusterinformations.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: ClusterInformationplural: clusterinformationssingular: clusterinformation

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: felixconfigurations.crd.projectcalico.org

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 39

Page 44: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

spec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: FelixConfigurationplural: felixconfigurationssingular: felixconfiguration

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: globalnetworkpolicies.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: GlobalNetworkPolicyplural: globalnetworkpoliciessingular: globalnetworkpolicyshortNames:- gnp

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: globalnetworksets.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: GlobalNetworkSetplural: globalnetworksetssingular: globalnetworkset

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: hostendpoints.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: HostEndpointplural: hostendpointssingular: hostendpoint

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: ipamblocks.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: IPAMBlockplural: ipamblockssingular: ipamblock

---apiVersion: apiextensions.k8s.io/v1beta1

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 40

Page 45: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

kind: CustomResourceDefinitionmetadata:name: ipamconfigs.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: IPAMConfigplural: ipamconfigssingular: ipamconfig

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: ipamhandles.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: IPAMHandleplural: ipamhandlessingular: ipamhandle

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: ippools.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: IPPoolplural: ippoolssingular: ippool

---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: kubecontrollersconfigurations.crd.projectcalico.orgspec:scope: Clustergroup: crd.projectcalico.orgversion: v1names:kind: KubeControllersConfigurationplural: kubecontrollersconfigurationssingular: kubecontrollersconfiguration---apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata:name: networkpolicies.crd.projectcalico.orgspec:scope: Namespacedgroup: crd.projectcalico.orgversion: v1names:kind: NetworkPolicyplural: networkpoliciessingular: networkpolicy

---apiVersion: apiextensions.k8s.io/v1beta1

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 41

Page 46: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

kind: CustomResourceDefinitionmetadata:name: networksets.crd.projectcalico.orgspec:scope: Namespacedgroup: crd.projectcalico.orgversion: v1names:kind: NetworkSetplural: networksetssingular: networkset

------# Source: calico/templates/rbac.yaml

# Include a clusterrole for the kube-controllers component,# and bind it to the calico-kube-controllers serviceaccount.kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:name: calico-kube-controllersrules:# Nodes are watched to monitor for deletions.- apiGroups: [""]resources:- nodesverbs:- watch- list- get# Pods are queried to check for existence.- apiGroups: [""]resources:- podsverbs:- get# IPAM resources are manipulated when nodes are deleted.- apiGroups: ["crd.projectcalico.org"]resources:- ippoolsverbs:- list- apiGroups: ["crd.projectcalico.org"]resources:- blockaffinities- ipamblocks- ipamhandlesverbs:- get- list- create- update- delete# kube-controllers manages hostendpoints.- apiGroups: ["crd.projectcalico.org"]resources:- hostendpointsverbs:- get- list- create- update- delete# Needs access to update clusterinformations.- apiGroups: ["crd.projectcalico.org"]resources:- clusterinformationsverbs:

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 42

Page 47: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

- get- create- update# KubeControllersConfiguration is where it gets its config- apiGroups: ["crd.projectcalico.org"]resources:- kubecontrollersconfigurationsverbs:# read its own config- get# create a default if none exists- create# update status- update# watch for changes- watch---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:name: calico-kube-controllersroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: calico-kube-controllerssubjects:- kind: ServiceAccountname: calico-kube-controllersnamespace: kube-system---# Include a clusterrole for the calico-node DaemonSet,# and bind it to the calico-node serviceaccount.kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:name: calico-noderules:# The CNI plugin needs to get pods, nodes, and namespaces.- apiGroups: [""]resources:- pods- nodes- namespacesverbs:- get- apiGroups: [""]resources:- endpoints- servicesverbs:# Used to discover service IPs for advertisement.- watch- list# Used to discover Typhas.- get# Pod CIDR auto-detection on kubeadm needs access to config maps.- apiGroups: [""]resources:- configmapsverbs:- get- apiGroups: [""]resources:- nodes/statusverbs:# Needed for clearing NodeNetworkUnavailable flag.- patch# Calico stores some configuration information in node annotations.- update

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 43

Page 48: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

# Watch for changes to Kubernetes NetworkPolicies.- apiGroups: ["networking.k8s.io"]resources:- networkpoliciesverbs:- watch- list# Used by Calico for policy information.- apiGroups: [""]resources:- pods- namespaces- serviceaccountsverbs:- list- watch# The CNI plugin patches pods/status.- apiGroups: [""]resources:- pods/statusverbs:- patch# Calico monitors various CRDs for config.- apiGroups: ["crd.projectcalico.org"]resources:- globalfelixconfigs- felixconfigurations- bgppeers- globalbgpconfigs- bgpconfigurations- ippools- ipamblocks- globalnetworkpolicies- globalnetworksets- networkpolicies- networksets- clusterinformations- hostendpoints- blockaffinitiesverbs:- get- list- watch# Calico must create and update some CRDs on startup.- apiGroups: ["crd.projectcalico.org"]resources:- ippools- felixconfigurations- clusterinformationsverbs:- create- update# Calico stores some configuration information on the node.- apiGroups: [""]resources:- nodesverbs:- get- list- watch# These permissions are only requried for upgrade from v2.6, and can# be removed after upgrade or on fresh installations.- apiGroups: ["crd.projectcalico.org"]resources:- bgpconfigurations- bgppeersverbs:- create- update

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 44

Page 49: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

# These permissions are required for Calico CNI to perform IPAM allocations.- apiGroups: ["crd.projectcalico.org"]resources:- blockaffinities- ipamblocks- ipamhandlesverbs:- get- list- create- update- delete- apiGroups: ["crd.projectcalico.org"]resources:- ipamconfigsverbs:- get# Block affinities must also be watchable by confd for route aggregation.- apiGroups: ["crd.projectcalico.org"]resources:- blockaffinitiesverbs:- watch# The Calico IPAM migration needs to get daemonsets. These permissions can be# removed if not upgrading from an installation using host-local IPAM.- apiGroups: ["apps"]resources:- daemonsetsverbs:- get

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:name: calico-noderoleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: calico-nodesubjects:- kind: ServiceAccountname: calico-nodenamespace: kube-system

---# Source: calico/templates/calico-node.yaml# This manifest installs the calico-node container, as well# as the CNI plugins and network config on# each master and worker node in a Kubernetes cluster.kind: DaemonSetapiVersion: apps/v1metadata:name: calico-nodenamespace: kube-systemlabels:k8s-app: calico-nodespec:selector:matchLabels:k8s-app: calico-nodeupdateStrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1template:metadata:labels:k8s-app: calico-node

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 45

Page 50: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

annotations:# This, along with the CriticalAddonsOnly toleration below,# marks the pod as a critical add-on, ensuring it gets# priority scheduling and that its resources are reserved# if it ever gets evicted.scheduler.alpha.kubernetes.io/critical-pod: ''spec:nodeSelector:kubernetes.io/os: linuxhostNetwork: truetolerations:# Make sure calico-node gets scheduled on all nodes.- effect: NoScheduleoperator: Exists# Mark the pod as a critical add-on for rescheduling.- key: CriticalAddonsOnlyoperator: Exists- effect: NoExecuteoperator: ExistsserviceAccountName: calico-node# Minimize downtime during a rolling upgrade or deletion; tell Kubernetes to do a "force# deletion": https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods.terminationGracePeriodSeconds: 0priorityClassName: system-node-criticalinitContainers:# This container performs upgrade from host-local IPAM to calico-ipam.# It can be deleted if this is a fresh installation, or if you have already# upgraded to use calico-ipam.- name: upgrade-ipamimage: calico/cni:v3.13.1command: ["/opt/cni/bin/calico-ipam", "-upgrade"]env:- name: KUBERNETES_NODE_NAMEvalueFrom:fieldRef:fieldPath: spec.nodeName- name: CALICO_NETWORKING_BACKENDvalueFrom:configMapKeyRef:name: calico-configkey: calico_backendvolumeMounts:- mountPath: /var/lib/cni/networksname: host-local-net-dir- mountPath: /host/opt/cni/binname: cni-bin-dirsecurityContext:privileged: true# This container installs the CNI binaries# and CNI network config file on each node.- name: install-cniimage: calico/cni:v3.13.1command: ["/install-cni.sh"]env:# Name of the CNI config file to create.- name: CNI_CONF_NAMEvalue: "10-calico.conflist"# The CNI network config to install on each node.- name: CNI_NETWORK_CONFIGvalueFrom:configMapKeyRef:name: calico-configkey: cni_network_config# Set the hostname based on the k8s node name.- name: KUBERNETES_NODE_NAMEvalueFrom:fieldRef:fieldPath: spec.nodeName# CNI MTU Config variable

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 46

Page 51: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

- name: CNI_MTUvalueFrom:configMapKeyRef:name: calico-configkey: veth_mtu# Prevents the container from sleeping forever.- name: SLEEPvalue: "false"volumeMounts:- mountPath: /host/opt/cni/binname: cni-bin-dir- mountPath: /host/etc/cni/net.dname: cni-net-dirsecurityContext:privileged: true# Adds a Flex Volume Driver that creates a per-pod Unix Domain Socket to allow Dikastes# to communicate with Felix over the Policy Sync API.- name: flexvol-driverimage: calico/pod2daemon-flexvol:v3.13.1volumeMounts:- name: flexvol-driver-hostmountPath: /host/driversecurityContext:privileged: truecontainers:# Runs calico-node container on each Kubernetes node. This# container programs network policy and routes on each# host.- name: calico-nodeimage: calico/node:v3.13.1env:# Use Kubernetes API as the backing datastore.- name: DATASTORE_TYPEvalue: "kubernetes"# Wait for the datastore.- name: WAIT_FOR_DATASTOREvalue: "true"# Set based on the k8s node name.- name: NODENAMEvalueFrom:fieldRef:fieldPath: spec.nodeName# Choose the backend to use.- name: CALICO_NETWORKING_BACKENDvalueFrom:configMapKeyRef:name: calico-configkey: calico_backend# Cluster type to identify the deployment type- name: CLUSTER_TYPEvalue: "k8s,bgp"# Auto-detect the BGP IP address.- name: IPvalue: "autodetect"# Enable IPIP- name: CALICO_IPV4POOL_IPIPvalue: "Always"# Enable or Disable VXLAN on the default IP pool.- name: CALICO_IPV4POOL_VXLANvalue: "Never"# Set MTU for tunnel device used if ipip is enabled- name: FELIX_IPINIPMTUvalueFrom:configMapKeyRef:name: calico-configkey: veth_mtu# Set MTU for the VXLAN tunnel device.- name: FELIX_VXLANMTUvalueFrom:

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 47

Page 52: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

configMapKeyRef:name: calico-configkey: veth_mtu# The default IPv4 pool to create on startup if none exists. Pod IPs will be# chosen from this range. Changing this value after installation will have# no effect. This should fall within `--cluster-cidr`.# - name: CALICO_IPV4POOL_CIDR# value: "192.168.0.0/16"# Disable file logging so `kubectl logs` works.- name: CALICO_DISABLE_FILE_LOGGINGvalue: "true"# Set Felix endpoint to host default action to ACCEPT.- name: FELIX_DEFAULTENDPOINTTOHOSTACTIONvalue: "ACCEPT"# Disable IPv6 on Kubernetes.- name: FELIX_IPV6SUPPORTvalue: "false"# Set Felix logging to "info"- name: FELIX_LOGSEVERITYSCREENvalue: "info"- name: FELIX_HEALTHENABLEDvalue: "true"securityContext:privileged: trueresources:requests:cpu: 250mlivenessProbe:exec:command:- /bin/calico-node- -felix-live- -bird-liveperiodSeconds: 10initialDelaySeconds: 10failureThreshold: 6readinessProbe:exec:command:- /bin/calico-node- -felix-ready- -bird-readyperiodSeconds: 10volumeMounts:- mountPath: /lib/modulesname: lib-modulesreadOnly: true- mountPath: /run/xtables.lockname: xtables-lockreadOnly: false- mountPath: /var/run/caliconame: var-run-calicoreadOnly: false- mountPath: /var/lib/caliconame: var-lib-calicoreadOnly: false- name: policysyncmountPath: /var/run/nodeagentvolumes:# Used by calico-node.- name: lib-moduleshostPath:path: /lib/modules- name: var-run-calicohostPath:path: /var/run/calico- name: var-lib-calicohostPath:path: /var/lib/calico

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 48

Page 53: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

- name: xtables-lockhostPath:path: /run/xtables.locktype: FileOrCreate# Used to install CNI.- name: cni-bin-dirhostPath:path: /opt/cni/bin- name: cni-net-dirhostPath:path: /etc/cni/net.d# Mount in the directory for host-local IPAM allocations. This is# used when upgrading from host-local to calico-ipam, and can be removed# if not using the upgrade-ipam init container.- name: host-local-net-dirhostPath:path: /var/lib/cni/networks# Used to create per-pod Unix Domain Sockets- name: policysynchostPath:type: DirectoryOrCreatepath: /var/run/nodeagent# Used to install Flex Volume Driver- name: flexvol-driver-hosthostPath:type: DirectoryOrCreatepath: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/nodeagent~uds---

apiVersion: v1kind: ServiceAccountmetadata:name: calico-nodenamespace: kube-system

---# Source: calico/templates/calico-kube-controllers.yaml# See https://github.com/projectcalico/kube-controllersapiVersion: apps/v1kind: Deploymentmetadata:name: calico-kube-controllersnamespace: kube-systemlabels:k8s-app: calico-kube-controllersspec:# The controllers can only have a single active instance.replicas: 1selector:matchLabels:k8s-app: calico-kube-controllersstrategy:type: Recreatetemplate:metadata:name: calico-kube-controllersnamespace: kube-systemlabels:k8s-app: calico-kube-controllersannotations:scheduler.alpha.kubernetes.io/critical-pod: ''spec:nodeSelector:kubernetes.io/os: linuxtolerations:# Mark the pod as a critical add-on for rescheduling.- key: CriticalAddonsOnlyoperator: Exists- key: node-role.kubernetes.io/master

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 49

Page 54: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

effect: NoScheduleserviceAccountName: calico-kube-controllerspriorityClassName: system-cluster-criticalcontainers:- name: calico-kube-controllersimage: calico/kube-controllers:v3.13.1env:# Choose which controllers to run.- name: ENABLED_CONTROLLERSvalue: node- name: DATASTORE_TYPEvalue: kubernetesreadinessProbe:exec:command:- /usr/bin/check-status- -r

---

apiVersion: v1kind: ServiceAccountmetadata:name: calico-kube-controllersnamespace: kube-system

---# Source: calico/templates/calico-etcd-secrets.yaml

---# Source: calico/templates/calico-typha.yaml

---# Source: calico/templates/configure-canal.yaml

3.6.2 Calicoctl 部署 yaml 文件# Calico Version v3.13.1# https://docs.projectcalico.org/releases#v3.13.1# This manifest includes the following component versions:# calico/ctl:v3.13.1

apiVersion: v1kind: ServiceAccountmetadata:name: calicoctlnamespace: kube-system

---

apiVersion: v1kind: Podmetadata:name: calicoctlnamespace: kube-systemspec:nodeSelector:kubernetes.io/os: linuxhostNetwork: trueserviceAccountName: calicoctlcontainers:- name: calicoctlimage: calico/ctl:v3.13.1command: ["/bin/sh", "-c", "while true; do sleep 3600; done"]env:- name: DATASTORE_TYPEvalue: kubernetes

---

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 50

Page 55: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1beta1metadata:name: calicoctlrules:- apiGroups: [""]resources:- namespaces- nodesverbs:- get- list- update- apiGroups: [""]resources:- nodes/statusverbs:- update- apiGroups: [""]resources:- pods- serviceaccountsverbs:- get- list- apiGroups: [""]resources:- pods/statusverbs:- update- apiGroups: ["crd.projectcalico.org"]resources:- bgppeers- bgpconfigurations- clusterinformations- felixconfigurations- globalnetworkpolicies- globalnetworksets- ippools- kubecontrollersconfigurations- networkpolicies- networksets- hostendpoints- ipamblocks- blockaffinities- ipamhandles- ipamconfigsverbs:- create- get- list- update- delete- apiGroups: ["networking.k8s.io"]resources:- networkpoliciesverbs:- get- list

---

apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:name: calicoctlroleRef:apiGroup: rbac.authorization.k8s.io

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 51

Page 56: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

kind: ClusterRolename: calicoctlsubjects:- kind: ServiceAccountname: calicoctlnamespace: kube-system

鲲鹏虚拟化解决方案安装指南 3 Calico 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 52

Page 57: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

4 Open vSwitch 安装指南(CentOS 7.6)

4.1 介绍4.2 环境要求4.3 配置安装环境4.4 安装Open vSwitch4.5 功能验证4.6 故障排除

4.1 介绍

简要介绍

OVS(Open vSwitch)是一个基于Apache 2.0开源协议的多层软件交换机,致力于提供一个生产级质量的交换平台。OVS支持标准管理接口,并开放前向函数,以实现程序扩展和控制。由于OVS基于多种平台底座存在多种变体,本文以基础版本作为介绍对象。

图 4-1 OVS 架构

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 53

Page 58: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

OVS软件主要的架构由内核态的Datapath和用户态的vswitchd、ovsdb组成。

Datapath是负责数据交换的内核模块,从网口读取数据,快速匹配FlowTable中的流表项,成功的直接转发,失败的上交vswitchd进程进行处理。在OVS初始化和portbinding时注册钩子函数,把端口的报文处理接管到内核模块;

vswitchd是负责OVS管理和控制的守护进程,通过Unix Socket将配置信息保存到ovsdb中,并通过Netlink和内核模块进行交互;

ovsdb是OVS数据库,保存了OVS的配置信息。

此外,OVS发布包中还包含了一系列管理工具(ovs-vsctl、ovs-dpctl、ovs-ofctl、ovs-appctl、ovs-docker等),方便用户对OVS进行配置和使用。

OVS在虚拟机和容器等场景中作为虚拟交换机做了很好的适配,除了对外暴露了虚拟网络层的标准控制接口和可视化接口之外,它也提供了跨多物理节点的分布式支持,在多种虚拟化和容器技术中均进行了支持。

当前OVS支持以下特性:

● Standard 802.1Q VLAN model with trunk and access ports

● NIC bonding with or without LACP on upstream switch

● NetFlow, sFlow(R), and mirroring for increased visibility

● QoS (Quality of Service) configuration, plus policing

● Geneve, GRE, VXLAN, STT, and LISP tunneling

● 802.1ag connectivity fault management

● OpenFlow 1.0 plus numerous extensions

● Transactional configuration database with C and Python bindings

● High-performance forwarding using a Linux kernel module

其中Linux kernel module支持需要Linux内核版本高于3.10,此外,OVS还可以无需内核模块支持,完全以用户态模式运行,例如使用DPDK模式等,该内容在本文中对此内容不做详细介绍。

安装OVS软件需采用源码编译方式进行安装。

建议的版本

建议使用的版本为“2.12.0”。

4.2 环境要求以CentOS 7.6版本操作系统平台为例,介绍OVS软件编译及运行的环境要求。

硬件平台要求

硬件平台版本要求如表4-1所示。

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 54

Page 59: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

表 4-1 硬件平台要求

项目 说明

CPU 鲲鹏920处理器

磁盘 >10GB可用空间

网络 推荐Ethernet-10GE及以上网络

操作系统要求

操作系统要求如表4-2所示,采用其他版本操作系统,操作步骤将与本文内容有少量差异。

表 4-2 操作系统要求

项目 版本 下载地址

CentOS 7.6 https://www.centos.org/download/

Kernel 4.14.0 包含在操作系统镜像中

4.3 配置安装环境编译Open vSwitch组件之前,必须进行编译依赖的安装。

步骤1 安装通用编译安装依赖。$ yum install make gcc clang python3 openssl openssl-libs unbound* libcap-ng* libtool unbound python3 python-netifaces python-twisted-core libreswan

步骤2 (可选)安装内核编译依赖。

用户可以直接使用Linux内核内置的内核模块,也可以选择编译Open vSwitch发行版中附带的内核模块代码。当前章节仅在用户需要编译对应内核模块代码时需要执行。另外,用户也可以选择使用纯用户控件实现的编译方式,但是要付出一些功能和性能上的代价。

$ yum install kernel kernel-headers gcc

步骤3 (可选)安装RPM包编译依赖。

用户若需要打包编译包为deb或rpm包,则需要输入下列命令安装RPM包编译依赖。

$ yum install openssl-devel python-devel groff graphviz selinux-policy-devel python-twisted-core python-zope-interface python-sphinx libcap-devel libcap-ng-devel unbound unbound-devel rpm-*

----结束

4.4 安装 Open vSwitch

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 55

Page 60: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

4.4.1 源码包安装

说明

安装操作以“/open-vswitch/”作为下载、解压后的路径。

步骤1 下载源码包。

● 方法一:Git获取

用户可以选择OVS的官方代码仓克隆代码,切换到对应版本的分支编译使用。

$ git clone https://github.com/openvswitch/ovs.git$ git checkout v2.12.0

● 方法二:源码压缩包获取

用户可以选择从OVS的官方网站链接中下载Release版本代码。

版本归档地址:https://www.openvswitch.org/download/

下载版本链接:https://www.openvswitch.org/releases/openvswitch-2.12.0.tar.gz

● 方法三:源码压缩包获取

用户可以选择从OVS的官方代码仓下载版本代码的快照压缩包。

版本快照地址:https://github.com/openvswitch/ovs/releases

下载版本链接:https://github.com/openvswitch/ovs/archive/v2.12.0.zip /

https://github.com/openvswitch/ovs/archive/v2.12.0.tar.gz

步骤2 (可选)引导设置。

本步骤适用于步骤1中采用方法二下载源码压缩包并解压之后的情况,需要进行代码包的引导设置。

$ ./boot.sh

步骤3 运行配置脚本配置软件编译包。

说明

通常来说,用户可以不带任何参数地调用配置脚本。默认情况下,所有的可执行文件和共享库文件将安装在“/usr/local”目录下的文件夹内,另外OVS软件也会默认到“/usr/local/etc/openvswitch”文件夹下查找其数据库文件。

为了保持源码路径干净,创建一个独立的build目录来进行配置和编译。

$ mkdir -p build && cd build$ ../configure

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 56

Page 61: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

说明

一般来说,用户使用上述方法进行编译配置即可。如需自定义配置(如自定义安装路径、指定自定义数据库文件路径等),可参考下列命令进行配置:

● 若需要修改安装路径和默认数据库目录。$ ../configure --prefix=<your-installation-dir> --localstatedir=<your-var-dir> --sysconfdir=<your-default-db-dir>

● 默认将构建和链接静态库,若需要更改为使用共享库。$ ../configure --enable-shared

● 默认将使用环境变量中默认编译器进行编译,若需要指定特定的编译器来编译。$ ../configure CC=gcc-4.7.3

● 若需要指定使用Clang编译器。$ ../configure CC=clang

● 若需要向编译器提供特殊标志。$ ../configure CFLAGS=”-g -O2 -mtune=tsv110”

● 若需要开发OVS软件,需要打开调试选项和地址消毒。$ ../configure CFLAGS=”-g -O2 -fsanitize=address -fno-omit-frame-pointer -fno-common”

● 若需要编译Linux内核模块,以便于运行基于内核的开关,需要带上--with-linux选项路径$ ../configure --with-linux=/lib/modules/$(uname -r)/build

更多编译设置选项请参考configure --help;

或Open vSwitch官方指导:https://docs.openvswitch.org/en/latest/intro/install/general/

步骤4 编译组件。$ make -j4

在完成编译依赖安装与编译配置后,即可在构建目录中运行GNU make进行组件的编译步骤,编译完成后构建目录如下图所示。

步骤5 (可选)编译RPM包。

若需要编译rpm或deb包(本文以CentOS rpm包为例),供其他节点安装使用,可以使用下列命令进行rpm包的打包,完成后如下图所示将在rpmbuild目录下生成相关rpm包。

$ make rpm-fedora$ make rpm-fedora-kmod

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 57

Page 62: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤6 安装组件。$ make install

若用户重新编译构建了内核模块,则需要进行内核模块的安装、加载和检查。

$ make modules_install$ /sbin/modprobe openvswitch$ /sbin/lsmod | grep openvswitch

----结束

4.4.2 RPM 包安装

步骤1 下载RPM包。

● 方法一:从华为云鲲鹏镜像站获取RPM包

用户可以选择下载华为云鲲鹏镜像站的Open vSwitch预编译版本,版本包内容如表1 华为云鲲鹏镜像站OVS RPM包所示。

版本路径:https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/

表 4-3 华为云鲲鹏镜像站 OVS RPM 包

RPM包名 下载链接

openvswitch-2.12.0-1.el7.aarch64.rpm

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/openvswitch-2.12.0-1.el7.aarch64.rpm

openvswitch-debuginfo-2.12.0-1.el7.aarch64.rpm

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/openvswitch-debuginfo-2.12.0-1.el7.aarch64.rpm

openvswitch-devel-2.12.0-1.el7.aarch64.rpm

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/openvswitch-devel-2.12.0-1.el7.aarch64.rpm

openvswitch-ipsec-2.12.0-1.el7.aarch64.rpm

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/openvswitch-ipsec-2.12.0-1.el7.aarch64.rpm

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 58

Page 63: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

RPM包名 下载链接

openvswitch-selinux-policy-2.12.0-1.el7.noarch.rpm

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/openvswitch-selinux-policy-2.12.0-1.el7.noarch.rpm

python-openvswitch-2.12.0-1.el7.noarch.rpm

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/cloud/python-openvswitch-2.12.0-1.el7.noarch.rpm

● 方法二:用户自行编译打包RPM包

本方法适用于4.4.1 源码包安装章节中制作RPM包并分发至待部署节点安装的情况,用户使用自行编译的RPM包进行安装。

步骤2 安装。$ cd <rpm-dir> && rpm -ivh *

----结束

4.5 功能验证

4.5.1 组件启动

4.5.1.1 默认配置启动

在Linux平台上,启动OVS组件守护进程是一个简单的过程。在源码安装/RPM安装后包含一个名为ovs-ctl的用户工具,它是带有帮助功能的Shell脚本,可以进行ovsdb-server和ovs-vswitchd的自动启动和停止等任务。

组件安装后,可以使用ovs-ctl工具启动守护程序,它会设置初始化条件、按序启动守护进程,该工具位于安装目录下的scripts内,默认是“/usr/local/share/openvswitch/scripts或/usr/share/openvswitch/scripts”。默认情况下,可以使用下列命令进行启动,启动过程如下图所示,完成后可以查看到对应的信息。

$ export PATH=$PATH:/usr/local/share/openvswitch/scripts$ ovs-ctl start

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 59

Page 64: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

4.5.1.2 自定义启动

用户可以根据自己的需求,使用特定选项分别启动/停止守护进程。

● 场景一:仅启动ovsdb守护进程,不启动ovs-vswitchd守护进程$ ovs-ctl --no-ovs-vswitchd start

● 场景二:仅启动ovs-vswitchd守护进程,不启动ovsdb守护进程$ ovs-ctl --no-ovsdb-server start

● 场景三:配置本机OVS使用的ovsdb-server数据库文件,手动启动所有守护进程。$ mkdir -p /usr/local/etc/openvswitch$ ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema$ mkdir -p /usr/local/var/run/openvswitch$ ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \--remote=db:Open_vSwitch,Open_vSwitch,manager_options \--private-key=db:Open_vSwitch,SSL,private_key \--certificate=db:Open_vSwitch,SSL,certificate \--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \--pidfile --detach --log-file$ ovs-vsctl --no-wait init$ ovs-vswitchd --pidfile --detach --log-file

4.5.2 功能验证用户可以使用ovs-vsctl命令设置网桥进行功能验证,例如创建一个名为br0的网桥,并将物理端口enp189s0f1和enp189s0f2添加到网桥。

$ ovs-vsctl add-br br0$ ovs-vsctl add-port br0 enp189s0f1$ ovs-vsctl add-port br0 enp189s0f2

操作完成后,通过ovs-vsctl show可以查看到如下结果。

4.6 故障排除

问题一:启动过程提示“ovs-ctl command not found”现象描述:

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 60

Page 65: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

输入命令ovs-ctl start,显示ovs-ctl command not found

可能原因:

未设置工具路径至环境变量,参考4.5.1.1 默认配置启动章节的描述设置环境变量。

处理步骤:

1. 确认Open vSwitch安装路径,例如“/usr/local/share”。

2. 设置环境变量。$ export PATH=$PATH:/usr/local/share/openvswitch/scripts

3. 重新启动OVS组件。$ ovs-ctl start

鲲鹏虚拟化解决方案安装指南 4 Open vSwitch 安装指南(CentOS 7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 61

Page 66: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

5 K8s topology manager patch 安装指南

(CentOS 7.6)

5.1 介绍

5.2 环境要求

5.3 安装

5.4 配置

5.5 部署集群

5.6 故障排除

5.1 介绍

简要介绍

拓扑管理器(Topology Manager)是kubelet的一部分,用于协调负责这些优化的一组组件。本文档基于1.12.2版本,旨在提供v1.18.6版本拓扑管理特性,以实现在分配CPU时NUMA对齐。

官方文档:https://kubernetes.io/zh/docs/tasks/administer-cluster/topology-manager/

建议的版本

建议的软件版本如表5-1所示。

表 5-1 建议的软件版本

软件 版本 安装方式

K8s组件 1.12.2 通过下文配置yum源的方式安装

鲲鹏虚拟化解决方案安装指南

5 K8s topology manager patch 安装指南(CentOS7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 62

Page 67: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

5.2 环境要求

硬件要求

硬件要求如表5-2所示。

表 5-2 硬件要求

类别 项目 要求

硬件 服务器 3*TaiShan 200服务器(型号2280)

CPU 鲲鹏920处理器

网卡 板载电口网卡TM210

操作系统要求

操作系统要求如表5-3所示。

表 5-3 操作系统要求

类型 获取方法

操作系统 操作系统版本

CentOS Linux release 7.6.1810(AltArch)下载链接:http://isoredirect.centos.org/altarch/7/isos/aarch64/

操作系统软件选择(software selection)

software selection

Server with GUI

鲲鹏虚拟化解决方案安装指南

5 K8s topology manager patch 安装指南(CentOS7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 63

Page 68: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

类型 获取方法

网络需求 ● DockerHub(https://hub.docker.com/)网络可达

● Docker下载地址(https://download.docker.com/linux/static/stable/aarch64/)网络可达

● 集群各个节点之间网络可达,flannel插件代码(https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml)网络可达

须知

搭建K8s集群,每台节点均需要按照文档安装Docker及K8s的全部组件。

集群规划

K8s集群由一个管理节点(Master,也称主节点)与多个计算节点(Node)组成,集群创建、管理工作均在Master节点执行,计算节点通过kubeadm join操作加入集群。因此,Master与Node需要处在同一个网络下,且可以互通。规划的集群组网如图5-1所示。

鲲鹏虚拟化解决方案安装指南

5 K8s topology manager patch 安装指南(CentOS7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 64

Page 69: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

图 5-1 K8s 集群组网

说明

● Master为集群管理节点,Worker为集群计算节点。

● 为验证集群搭建功能,至少需要两个节点。如果要验证亲和性调度功能,至少需要三台节点,安装配置工作在每台节点都需要执行。

5.3 安装步骤1 获取patch。

下载链接:https://github.com/kunpengcompute/kubernetes/blob/v1.12.2_dev/tpmanager.patch

步骤2 将tpmanager.patch移动至K8s根目录下。patch -p1 <tpmanager.patch

步骤3 编译。make

鲲鹏虚拟化解决方案安装指南

5 K8s topology manager patch 安装指南(CentOS7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 65

Page 70: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

步骤4 查看编译出的二进制文件。ls _output/local/bin/linux/arm64/cp _output/local/bin/linux/arm64/kubelet /usr/bin/

步骤5 重启kubelet服务。systemctl restart kubelet

----结束

5.4 配置步骤1 注释外层kubelet.service的ExecStart。若不注释,会报错“存在多个ExeStart”。

vi /usr/lib/systemd/system/kubelet.service#ExecStart=/usr/bin/kubelet

步骤2 修改kubelet配置文件,启用拓扑管理策略。

--topology-manager-policy可选:

● single-numa-node● best-effort● restricted● nonevi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf# Note: This dropin only works with kubeadm and kubelet v1.11+[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"# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamicallyEnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.EnvironmentFile=-/etc/sysconfig/kubelet

1. 修改点一:添加如下两行ExecStartPre=/usr/bin/mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.serviceExecStartPre=/usr/bin/mkdir -p /sys/fs/cgroup/hugetlb/system.slice/kubelet.service

2. 修改点二:修改如下这行,添加CPU Manager和Topology Manager的配置开关ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --kube-reserved=cpu=2,memory=250Mi --cpu-manager-policy=static --feature-gates=CPUManager=true,TopologyManager=true --topology-manager-policy=single-numa-node

----结束

5.5 部署集群请参考《K8s集群 部署指南(CentOS 7.6)》进行部署。

鲲鹏虚拟化解决方案安装指南

5 K8s topology manager patch 安装指南(CentOS7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 66

Page 71: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

5.6 故障排除

问题一:部署 pod 一直处于 pengding 状态

现象描述:

部署pod一直处于pengding状态。

可能原因:

1.12.2版本的节点label带有beta字段,例如:beta.kubernetes.io/arch=arm64,beta.kubernetes.io/os=linux。与高版本的label不一致,需注意区分。

处理步骤:

部署yaml前检查nodeSelector标签是否一致,或者通过kubectl describe命令查看。

问题二:coredns 不断重启问题

现象描述:

K8s启动时pod coredns不断重启,处于crashloopbackoff状态。

可能原因:

请参考https://github.com/coredns/coredns/issues/2087

处理步骤:

步骤1 检查“/etc/resolve.conf”是否配置正确。

步骤2 编辑K8s配置文件。kubectl -n kube-system edit configmap coredns

删除loop字段,保存后删除pod自动重新拉起。

----结束

鲲鹏虚拟化解决方案安装指南

5 K8s topology manager patch 安装指南(CentOS7.6)

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 67

Page 72: 安装指南 - HUAWEI CLOUD1.5 运行和验证 1.6 更多资源 1.1 介绍 简要介绍 Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如

A 修订记录

发布日期 修订记录

2020-09-28 第五次正式发布

新增《5 K8s topology manager patch 安装指南(CentOS7.6)》。

2020-09-21 第四次正式发布

鲲鹏云平台解决方案更名为鲲鹏虚拟化解决方案。

2020-06-24 第三次正式发布

新增《3 Calico 安装指南(CentOS 7.6)》和《4 OpenvSwitch 安装指南(CentOS 7.6)》。

2020-05-15 第二次正式发布

修改“2.4 安装”章节中部分操作描述。

2020-03-20 第一次正式发布

鲲鹏虚拟化解决方案安装指南 A 修订记录

文档版本 05 (2020-09-28) 版权所有 © 华为技术有限公司 68