2022 年全国职业院校技能大赛高职组云计算赛项试卷-容器云-1

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 文件中。

你可能感兴趣的:(容器云,运维,kubernetes,云计算)