4

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

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

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

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

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

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

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

(1)安装Docker

Kubernetes默认的容器运行时仍然是Docker,使用的是kubelet中内置dockershim CRI实现。

所有节点安装Docker-ce:

yum install -y yum-utils device-mapper-persistent-data lvm2

yum install -y docker-ce

启动Docker:

systemctl start docker

systemctl enable docker

(2)安装docker-compose

在master节点安装docker-conpose:

cp -rfv /opt/paas/docker-compose/v1.25.5-docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose version

docker-compose version 1.25.5, build 8a1c60f6

【题目 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 分。

(1)两台节点(一台master,一台node),将提供的安装包 chinaskills_cloud_paas_v2.0.2.iso 上传至 master 节点/root 目录,并解压 到/opt 目录

[root@localhost ~]# mount -o loop chinaskills_cloud_paas_v2.0.2.iso /mnt/

[root@localhost ~]# cp -rfv /mnt/* /opt/

[root@localhost ~]# umount /mnt/

(2)安装 kubeeasy依赖

[root@localhost ~]# mv /opt/kubeeasy /usr/bin/kubeeasy

[root@localhost ~]# kubeeasy install depend \

--host 10.24.2.10,10.24.2.11 \

--user root

--password Abc@1234

--offline-file /opt/dependencies/base-rpms.tar.gz

--host:所有主机节点 IP,如:10.24.1.2-10.24.1.10,中间用"-"隔开,表示 10.24.1.2 到 10.24.1.10 范围内的所有 IP。若 IP 地址不连续,则列出所有节点 IP,用逗号隔开,如: 10.24.1.2,10.24.1.7,10.24.1.9。

--user:主机登录用户,默认为 root。

--password:主机登录密码,所有节点需保持密码一致。

--offline-file:离线安装包路径。

(3)在master节点执行以下命令部署Kubernetes集群:

[root@localhost ~]# kubeeasy install kubernetes

--master 10.24.2.10

--worker 10.24.2.11

--user root

--password Abc@1234

--version 1.22.1

--offline-file /opt/kubernetes.tar.gz

部分参数解释如下:

--master:Master节点IP。

--worker:Node节点IP,如有多个Node节点用逗号隔开。

--version:Kubernetes版本,此处只能为1.22.1。

可通过命令"tail -f /var/log/kubeinstall.log"查看安装详情或排查错误。

若集群部署失败或出现故障,可重置集群重新部署,重置命令如下:

[root@k8s-master-node1 ~]# kubeeasy reset

重置完成后再次执行步骤1.1-1.2即可重新部署集群。

部署完成后查看集群状态:

[root@k8s-master-node1 ~]# kubectl cluster-info

Kubernetes control plane is running at https://apiserver.cluster.local:6443

CoreDNS is running at https://apiserver.cluster.local:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

查看节点负载情况:

[root@k8s-master-node1 ~]# kubectl top nodes --use-protocol-buffers

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%

k8s-master-node1 389m 4% 6926Mi 43%

k8s-worker-node1 875m 10% 3365Mi 21%

(4)使用nginx镜像在default命名空间下创建一个名为exam的Pod,并为该Pod设置环境变量exam,其值为2022

docker load < /opt/extended-images/nginx_latest.tar

cat pod.yaml

apiVersion: v1

kind: Pod

metadata:

name: exam

spec:

containers:

  • name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    env:
    • name: "exam"
      value: "2022"
      使用命令进行创建:

kubectl apply -f pod.yaml

使用命令进行验证安装的集群环境及Pod:

kubectl cluster-info

Kubernetes control plane is running at https://apiserver.cluster.local:6443

CoreDNS is running at https://apiserver.cluster.local:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

kubectl exec exam -- printenv

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

HOSTNAME=exam

exam=2022

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

在 Kubernetes 集群上完成 Istio 服务网格环境的安装,然后新建命名空间 exam,为该命名空间开启自动注入 Sidecar。 完成后提交 master 节点的用户名、密码和 IP 到答题框。

1.Istio 所有组件运行成功得 0.3 分;

2.命名空间 exam 自动注入成功得 0.2 分。

(1)安装istio服务

在master节点执行以下命令进行Istio服务网格环境的安装:

[root@k8s-master-node1 ~]# kubeeasy add --istio istio

查看Pod:

[root@k8s-master-node1 ~]# kubectl -n istio-system get pods

NAME READY STATUS RESTARTS AGE

grafana-6ccd56f4b6-twwjv 1/1 Running 0 5m15s

istio-egressgateway-7f4864f59c-nxz2l 1/1 Running 0 5m34s

istio-ingressgateway-55d9fb9f-jzhnb 1/1 Running 0 5m34s

istiod-555d47cb65-jwkgp 1/1 Running 0 5m40s

jaeger-5d44bc5c5d-h9t29 1/1 Running 0 5m15s

kiali-79b86ff5bc-v9sfk 1/1 Running 0 5m15s

prometheus-64fd8ccd65-5px64 2/2 Running 0 5m15s

查看Istio版本信息:

[root@k8s-master-node1 ~]# istioctl version

client version: 1.12.0

control plane version: 1.12.0

data plane version: 1.12.0 (2 proxies)

Istio可视化

访问Grafana(http://master_IP:33000),如图5所示:

图5 Grafana访问界面

访问Prometheus(http://master_IP:30090),如图6所示:

图6访问Prometheus

查看Targets,如图7所示:

图7查看Targets

访问Jaeger(http://master_IP:30686),如图所示:

图8访问Jaeger

访问Kiali(http://master_IP:20001),如图9所示:

图9访问Kiali

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

kubectl create namespace exam

kubectl label namespace exam istio-injection=enabled

在master节点执行kubectl -n istio-system get all命令和kubectl get ns exam --show-labels命令进行验证:

kubectl -n istio-system get all

NAME READY STATUS RESTARTS AGE

pod/grafana-6ccd56f4b6-ssmbl 1/1 Running 0 81s

pod/istio-egressgateway-7f4864f59c-qm7wn 1/1 Running 0 97s

pod/istio-ingressgateway-55d9fb9f-jd4pn 1/1 Running 0 97s

pod/istiod-555d47cb65-p5cmq 1/1 Running 0 104s

pod/jaeger-5d44bc5c5d-xqvbj 1/1 Running 0 81s

pod/kiali-9f9596d69-2wsjl 1/1 Running 0 80s

pod/prometheus-64fd8ccd65-w2zrg 2/2 Running 0 80s

...

kubectl get ns exam --show-labels

NAME STATUS AGE LABELS

exam Active 28s istio-injection=enabled

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

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

1.KubeVirt 所有组件运行成功得 1 分。

(1)在master节点执行以下命令安装KubeVirt

[root@k8s-master-node1 ~]# kubeeasy add --virt kubevirt

查看Pod:

[root@k8s-master-node1 ~]# kubectl -n kubevirt get pods

NAME READY STATUS RESTARTS AGE

virt-api-8d998846b-2xx5m 1/1 Running 0 86s

virt-api-8d998846b-tqwhq 1/1 Running 0 86s

virt-controller-76b86f6965-gz8m4 1/1 Running 0 62s

virt-controller-76b86f6965-pjjv5 1/1 Running 0 62s

virt-handler-hvf45 1/1 Running 0 62s

virt-handler-x7bvj 1/1 Running 0 62s

virt-operator-579f86869c-k9nw4 1/1 Running 0 2m22s

virt-operator-579f86869c-vtrkn 1/1 Running 0 2m22s

【题目 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 分。

(1)在master节点执行以下命令进行Harbor仓库的安装

[root@k8s-master-node1 ~]# kubeeasy add --registry harbor

部署完成后查看Harbor仓库状态:

[root@k8s-master-node1 ~]# systemctl status harbor

● harbor.service - Harbor

Loaded: loaded (/usr/lib/systemd/system/harbor.service; enabled; vendor preset: disabled)

Active: active (running) since Mon 2021-12-06 14:34:49 CST; 30s ago

在Web端通过http://master_ip访问Harbor

使用管理员账号(admin/Harbor12345)登录Harbor

(3)使用nginx镜像自定义一个Chart,Deployment名称为nginx,副本数为1,然后将该Chart部署到default命名空间下,Release名称为web

[root@k8s-master-node1 ~]# helm create mychart

Creating mychart

[root@k8s-master-node1 ~]# rm -rf mychart/templates/*

[root@k8s-master-node1 ~]# vi mychart/templates/deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

creationTimestamp: null

labels:

app: nginx

name: nginx

spec:

replicas: 1

selector:

matchLabels:

app: nginx

strategy: {}

template:

metadata:

creationTimestamp: null

labels:

app: nginx

spec:

containers:

  • image: nginx

name: nginx

resources: {}

status: {}

[root@k8s-master-node1 ~]# helm install web mychart

NAME: web

LAST DEPLOYED: Tue Sep 13 16:23:12 2022

NAMESPACE: default

STATUS: deployed

REVISION: 1

TEST SUITE: None

在master节点执行helm status web命令进行验证:

[root@k8s-master-node1 ~]# helm status web

NAME: web

LAST DEPLOYED: Tue Sep 13 16:23:12 2022

NAMESPACE: default

STATUS: deployed

REVISION: 1

TEST SUITE: None

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

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

1.etcdctl 工具安装成功得 0.2 分;

2.ETCD 数据备份成功得 0.8 分。

在master节点执行:

(1)安装etcd

首先在master节点安装etcd

[root@master ~]# yum install etcd -y

查看etcd版本

[root@master ~]# etcdctl -version

etcdctl version: 3.3.11

API version: 2

(2)将Kubernetes 集群数据备份到/root/etcd.db 中

[root@master ~]# ETCDCTL_API=3 etcdctl --endpoints 192.168.248.128:2379 \

--cert=/etc/kubernetes/pki/etcd/server.crt

--key=/etc/kubernetes/pki/etcd/server.key

--cacert=/etc/kubernetes/pki/etcd/ca.crt

snapshot save /root/etcd.db

Snapshot saved at /root/etcd.db

相关推荐
韩楚风2 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学2 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO2 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu72 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我2 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、2 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程2 小时前
Linux中环境变量
linux
挥剑决浮云 -3 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学4 小时前
CentOS 7文件系统
linux·运维·centos
x晕x5 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器