云计算赛项容器云

云计算赛项

B站ID:老白嫖大怪兽

【赛程名称】云计算赛项第二场-容器云

​ 说明:完成本任务需要两台安装了 CentOS7.9 操作系统的云主机:master 和 node。Chinaskill_Cloud_PaaS.iso 镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。

​ 某公司技术部产品开发上线周期长,客户的需求经常得不到及时响应。引入 CICD (Continuous Integration 持续集成、Continuous Delivery 持续交付) 成了公司的当务之急,研 发团队决定搭建基于 Kubernetes 的 CICD 环境,希望基于这个平台来实现 DevOps 的部分流 程,来减轻开发、部署、运维的负担。

​ 为了能够让公司开发的 web 应用系统产品能够基于服务器的性能、可靠性、高可用性 与方便维护,研发部决定使用微服务架构,实现基于 Kubernetes 的容器化部署。

​ 节点规划如表所示。

节点角色 主机名 VCPUS 内存 硬盘 IP地址
Master、Harbor、CICD master 4 12G 100G 10.18.4.10
Worker Node node 4 8G 100G 10.18.4.11

【任务 1】容器云平台搭建[5 分]

【题目 1】平台部署–部署容器云平台[1.5 分]

​ 登录 OpenStack 私有云平台,使用 CentOS7.9 镜像创建两台云主机,使用 kubeeasy 工具 完成 Kubernetes 1.22.1 集群的搭建。然后使用 nginx 镜像在 default 命名空间下创建一个名为 exam 的 Pod,并为该 Pod 设置环境变量 exam,其值为 2022。

​ 完成后提交 master 节点的用户名、密码和 IP 到答题框。

​ 部署kubernets 1.22.1集群

curl -O http://10.18.4.46/chinaskills_cloud_paas_v2.0.2.iso
mount chinaskills_cloud_paas_v2.0.2.iso /mnt
cp -rvf /mnt/* /opt
cp /opt/kubeeasy /usr/bin
kubeeasy --help

#[install dependencies package cluster]
  kubeeasy install dependencies \
  --host 10.18.4.10,10.18.4.11 \
  --user root \
  --password 000000 \
  --offline-file /opt/dependencies/base-rpms.tar.gz

#[install k8s cluster offline]
  kubeeasy install kubernetes \
  --master 10.18.4.10 \
  --worker 10.18.4.11  \
  --user root \
  --password 000000 \
  --version 1.22.1 \
  --offline-file /opt/kubernetes.tar.gz

​ 基础创建

kubectl run exam --image nginx:latest --env="exam=2022" --image-pull-policy='IfNotPresent'

【题目 2】平台部署–部署 Istio 服务网格[0.5 分]

​ 在 Kubernetes 集群上完成 Istio 服务网格环境的安装,然后新建命名空间 exam,为该命名空间开启自动注入 Sidecar。

kubeeasy add --istio istio

#创建exam命名空间
kubectl create ns exam
#通过为命名空间打标签来实现自动注入
kubect label ns exam istio-injection=enabled

【题目 3】平台部署–部署 KubeVirt 虚拟化[1 分]

​ 在 Kubernetes 集群上完成 KubeVirt 虚拟化环境的安装。 完成后提交 master 节点的用户名、密码和 IP 到答题框。

kubeeasy add --virt kubevirt

【题目 4】平台部署–部署 Harbor 仓库及 Helm 包管理工具[1 分]

​ 在 master 节点上完成 Harbor 镜像仓库及 Helm 包管理工具的部署。然后使用 nginx 镜像 自定义一个 Chart,Deployment 名称为 nginx,副本数为 1,然后将该 Chart 部署到 default 命名空间下,Release 名称为 web。 完成后提交 master 节点的用户名、密码和 IP 到答题框。

#[add harbor]
kubeeasy add --registry harbor

​ helm部署nginx应用

#使用helm工具创建nginx项目
helm create nginx
rm -rf  nginx/templates/*

#创建deployment模板
kubectl create deployment nginx -oyaml --image=nginx:latest --replicas=1  --dry-run --port=80 > /root/nginx/templates/deployment.yaml

cat > /root/nginx/templates/deployment <apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
EOF

#创建helm应用的文档简介
cat > /root/nginx/templates/NOTES.txt <name: nginx
EOF

#部署以Release为web命名的helm任务
cd /root
helm install web nginx
helm uninstall web 

【题目 5】集群管理–备份 ETCD 数据[1 分]

​ Kubernetes 使用 ETCD 来存储集群的实时运行数据,为防止服务器宕机导致 Kubernetes 集群数据丢失,请将 Kubernetes 集群数据备份到/root/etcd.db 中。 完成后提交 master 节点的 IP 地址、用户名和密码到答题框。

​ 备份etcd数据需要集群中有etcdctl的命令行工具。这个工具的获取方式可以是在官网中找对应部署etcd镜像的etcd的源码包。链接如下:https://github.com/etcd-io/etcd/releases。但是这种方式下载很慢,并且不能保证赛项提供了这个包。所以可以使用我的这种方式:

云计算赛项容器云_第1张图片

检查etcd状态:

#查看etcd集群成员列表
ETCDCTL_API=3 /usr/local/bin/etcdctl \
 --cacert=/etc/kubernetes/pki/etcd/ca.crt \
 --cert=/etc/kubernetes/pki/etcd/server.crt \
 --key=/etc/kubernetes/pki/etcd/server.key \
 --endpoints="https://127.0.0.1:2379"  member list

#查看etcd端点状态
ETCDCTL_API=3 /usr/local/bin/etcdctl \
 --cacert=/etc/kubernetes/pki/etcd/ca.crt \
 --cert=/etc/kubernetes/pki/etcd/server.crt \
 --key=/etc/kubernetes/pki/etcd/server.key \
 --endpoints="https://127.0.0.1:2379"  endpoint status   

开始备份etcd数据:

#基础格式
ETCDCTL_API=3 etcdctl \
--cacert="${CACERT}" --cert="${CERT}" --key="${KEY}" \
--endpoints=${ENDPOINTS} \
snapshot save /root/etcd.db
ETCDCTL_API=3 /usr/local/bin/etcdctl \
 --cacert=/etc/kubernetes/pki/etcd/ca.crt \
 --cert=/etc/kubernetes/pki/etcd/server.crt \
 --key=/etc/kubernetes/pki/etcd/server.key \
 --endpoints="https://127.0.0.1:2379" snapshot save /root/etcd.db

云计算赛项容器云_第2张图片

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