2022 年全国职业院校技能大赛高职组云计算赛项试卷
........
【任务 1 】容器云平台搭建[5 分]
【适用平台】私有云
【题目 1】平台部署--部署容器云平台[1.5 分]
登录 OpenStack 私有云平台,使用 CentOS7.9 镜像创建两台云主机,使用 kubeeasy 工具完成 Kubernetes 1.22.1 集群的搭建。然后使用 nginx 镜像在 default 命名空间下创建一个名为exam 的 Pod,并为该 Pod 设置环境变量 exam,其值为 2022。完成后提交 master 节点的用户名、密码和 IP 到答题框。
1.Kubernetes 集群部署成功得 1 分;
2.Pod 创建成功且环境变量设置正确得 0.5 分。
搭建kubernetes集群:
前提条件设置好主机名,域名解析,这里就不写出来了。
mount -o loop chinaskills_cloud_paas_v2.0.1.iso /mnt/
cp -rfv /mnt/* /opt/
umount /mnt/
安装kubeeasy
kubeeasy为Kubernetes集群专业部署工具,极大的简化了部署流程。其特性如下:
全自动化安装流程;
支持DNS识别集群;
支持自我修复:一切都在自动扩缩组中运行;
支持多种操作系统(如 Debian、Ubuntu 16.04、CentOS7、RHEL等);
支持高可用。
在master节点安装kubeeasy工具:
mv /opt/kubeeasy /usr/bin/kubeeasy
1.2 安装依赖包
在master节点执行命令:
kubeeasy install depend \
--host 10.24.2.10,10.24.2.11 \ #自己的两台主机IP地址
--user root \
--password Abc@1234 \
--offline-file /opt/dependencies/base-rpms.tar.gz
1.3 配置SSH免密钥
安装Kubernetes集群的时候,需要配置Kubernetes集群各节点间的免密登录,方便传输文件和通讯。
在master节点执行以下命令完成集群所有节点间的免密钥配置:
kubeeasy create ssh-keygen \
--master 10.24.2.10 \ #master节点的IP地址
--worker 10.24.2.11 \ #node节点的IP地址
--user root --password Abc@1234 #自己的虚拟机密码
在master节点执行以下命令部署Kubernetes集群:
kubeeasy install kubernetes \
--master 10.24.2.10 \ #master节点的IP地址
--worker 10.24.2.11 \ #node节点的IP地址
--user root \
--password Abc@1234 \
--version 1.22.1 \
--offline-file /opt/kubernetes.tar.gz
安装完成后,kubernetes集群就搭建好了。
创建一个名为 exam-pod.yaml 的文件,然后将以下内容复制到该文件中:
vi exam-pod.yaml
#添加以下内容
apiVersion: v1
kind: Pod
metadata:
name: exam
namespace: default
spec:
containers:
- name: nginx
image: nginx
env:
- name: exam
value: "2022"
使用 kubectl 创建 Pod:
kubectl apply -f exam-pod.yaml
【题目 2】平台部署--部署 Istio 服务网格[0.5 分]
在 Kubernetes 集群上完成 Istio 服务网格环境的安装,然后新建命名空间 exam,为该命
名空间开启自动注入 Sidecar。完成后提交 master 节点的用户名、密码和 IP 到答题框。
1.Istio 所有组件运行成功得 0.3 分;
2.命名空间 exam 自动注入成功得 0.2 分。
解压 Istio 压缩包:
cd /opt/
tar -xzf istio.tar.gz
cd istio/
将 Istio 的 bin 目录添加到您的 PATH 环境变量中:
export PATH=$PWD/bin:$PATH
使用 IstioOperator 的默认配置安装 Istio:
istioctl install --set profile=demo -y
验证 Istio 是否已成功安装:
kubectl get pods -n istio-system
创建 exam 命名空间:
kubectl create namespace exam
为 exam 命名空间启用自动注入 Sidecar:
kubectl label namespace exam istio-injection=enabled
现在,当你在 exam 命名空间中创建新的 Pod 时,Istio 将自动为每个 Pod 注入 Sidecar 代理。
【题目 3】平台部署--部署 KubeVirt 虚拟化[1 分]
在 Kubernetes 集群上完成 KubeVirt 虚拟化环境的安装。
完成后提交 master 节点的用户名、密码和 IP 到答题框。
1.KubeVirt 所有组件运行成功得 1 分。
tar -xzvf kubevirt.tar.gz
cd kubevirt/
kubectl create -f kubevirt-operator.yaml
kubectl create -f kubevirt-cr.yaml
kubectl get pods -n kubevirt
当看到全部的pod都是Running就部署成功了。
【题目 4】平台部署--部署 Harbor 仓库及 Helm 包管理工具[1 分]
在 master 节点上完成 Harbor 镜像仓库及 Helm 包管理工具的部署。然后使用 nginx 镜像自定义一个 Chart,Deployment 名称为 nginx,副本数为 1,然后将该 Chart 部署到 default命名空间下,Release 名称为 web。
完成后提交 master 节点的用户名、密码和 IP 到答题框。
1.Harbor 仓库部署成功得 0.5 分;
2.Helm 工具安装成功得 0.2 分;
3.Chart 包部署成功得 0.3 分。
安装docker-compose
在master节点安装docker-conpose:
curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
给docker-compose文件添加可执行权限
chmod +x /usr/local/bin/docker-compose
添加软连接到/usr/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
验证是否安装成功:
docker-compose version
部署Harbor:
解压安装包:
tar -xzvf harbor-offline.tar.gz
cd harbor
修改Harbor配置信息:
vi harbor.yml
hostname: 10.18.4.10 # 只需要修改为本机IP或域名
harbor_admin_password: 12345 #密码也可以修改成自己想要的
启动Harbor:
./prepare && ./install.sh
在安装脚本执行成功后,启动Harbor:
docker-compose up -d
部署helm工具:
tar -zxvf helm-v3.7.1-linux-amd64.tar.gz
这将在当前目录下创建一个名为 linux-amd64 的文件夹。
进入解压缩后的目录:
cd linux-amd64
在这个目录下,您会找到一个名为 helm 的可执行文件。
将 helm 可执行文件移动到 /usr/local/bin/ 目录,这样您就可以在系统的任何位置运行 Helm 命令:
sudo mv helm /usr/local/bin/
确认 Helm 安装成功:
helm version
如果安装成功,您将看到 Helm 的版本信息。
使用 Helm 创建一个新的 Chart:
helm create nginx-chart
这将创建一个名为 nginx-chart 的目录,其中包含一个默认的 Helm Chart 结构。
cd nginx-chart
修改 Chart.yaml 文件,添加或更新以下内容:
vi Chart.yaml
apiVersion: v2
name: nginx
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: 1.21
修改 values.yaml 文件,设置副本数为 1:
replicaCount: 1 #已经修改,可以不修改
修改 templates/deployment.yaml 文件,将 Deployment 名称更改为 nginx:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx #改这里
labels:
{{- include "nginx.labels" . | nindent 4 }}
........
使用 Helm 部署您的自定义 Nginx Chart:
在这一步请切换目录到nginx-chart的上一级目录
helm install web ./nginx-chart --namespace default
这将在 default 命名空间下部署名为 web 的 Helm release。
完成上述步骤后,您应该已经成功地将自定义 Nginx Chart 部署到 Kubernetes 集群中。您可以使用以下命令来检查 Pod 的状态:
kubectl get pods --namespace default
【题目 5 】集群管理-- 备份 ETCD 数据[1 分]
Kubernetes 使用 ETCD 来存储集群的实时运行数据,为防止服务器宕机导致 Kubernetes集群数据丢失,请将 Kubernetes 集群数据备份到/root/etcd.db 中。
完成后提交 master 节点的 IP 地址、用户名和密码到答题框。
1.etcdctl 工具安装成功得 0.2 分;
2.ETCD 数据备份成功得 0.8 分。
解压etc压缩包:
tar xvzf etcd-v3.4.25-linux-amd64.tar.gz
将 etcdctl 二进制文件复制到一个系统路径中:
cp etcd-v3.4.25-linux-amd64/etcdctl /usr/local/bin/
设置可执行权限:
chmod +x /usr/local/bin/etcdctl
设置 etcdctl 的环境变量。您需要从 etcd 的配置中获取以下参数:
ETCDCTL_API:设置为 3(etcd API 的版本)。
ETCDCTL_ENDPOINTS:etcd 的端点列表(使用逗号分隔)。
ETCDCTL_CACERT:etcd 服务器的 CA 证书路径。
ETCDCTL_CERT:etcd 服务器的客户端证书路径。
ETCDCTL_KEY:etcd 服务器的客户端密钥路径。
可以从/etc/kubernetes/manifests/etcd.yaml中查看相应的内容。例如:
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=https://127.0.0.1:2379
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key
请确保将上述示例中的路径替换为实际路径。
使用 etcdctl 工具备份 etcd 数据:
etcdctl snapshot save /root/etcd.db
这将会将 etcd 数据备份到 /root/etcd.db 文件中。