华为云云原生认证心得,含完整前5个微认证实验教程

这次发考证券快多了,直接考完6个


这是我的AFF链接,如果看完觉得有帮助,请帮个忙:云原生认证集证有礼活动-含AFF

理论考试偏技术性问题,直接全部问gemini 2.5pro能一遍过,因此就不放理论考试题目了

开虚拟机或者远程桌面或者scrcpy连接手机防切屏检测,推荐搭配chrome插件:超级复制,直接就能复制,省的ocr题目

实验考试操作就是docker kubectl 那些命令,不会也能问gemini,下面放了题目,如果有不懂的直接扔给ai让生成命令就行
前5个认证都有实验考试,不过实验考试证书不会生成,38的微认证应该都没有实验考试
有些槽点

  1. 实验考试的云服务器默认安全组没开22端口,要先去安全组放行,建议直接一键放通常用端口,省事

  2. 容器拉不下来,要配置镜像地址
    华为云控制台-容器镜像服务 SWR-镜像资源-镜像中心-镜像加速器 可直接复制命令配置华为源

但是华为源有的镜像还没有,我用的1panel的镜像源:

sudo vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://docker.1panel.live"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info
  1. kubectl配置文件可以这样上传:
user@sandbox:~/Downloads$ ls
cce-k8s-kubeconfig.yaml
user@sandbox:~/Downloads$ realpath cce-k8s-kubeconfig.yaml
/home/Downloads/cce-k8s-kubeconfig.yaml
user@sandbox:~/Downloads$ scp /home/Downloads/cce-k8s-kubeconfig.yaml [email protected]:/home
  1. 云数据库RDS安全组也没放开,记得放端口,还有绑定弹性IP
  2. 不知道官方故意还是写错了,写的镜像niginx:1.7.9,不过不影响考试步骤,就按niginx:1.7.9来吧
  3. 如果你对云容器引擎 CCE云服务的购买不熟悉,可以看看华为云官方的步骤:在CCE集群中部署NGINX无状态工作负载
    附实验考试题目和AI答案(人工进行了订正,如有错误请再问AI详细的命令):
云原生基础设施之容器入门

任务1:dockerfile构建容器镜像

得分点:能正确创建名为httpd:v1的镜像,并正常运行。

其中dockerfile的部分参数如下:

① 基础镜像:httpd

② 维护者:[email protected]

③ 端口:80

④ 运行命令:echo "dockerfile test"> /usr/local/apache2/htdocs/index.html

⑤ 以下为dockerfile模板,可根据此模板修改内容:

FROM centos:centos7

MAINTAINER [email protected]

EXPOSE 80

RUN yum install -y httpd vi && yum clean all

使用docker run以该镜像运行容器,并借助-p参数指定访问端口为80。在浏览器内输入http://EIP:80。出现dockerdile test文字则证明任务完成。

本任务中需注意以下内容:

(1)使用错误的命名不得分

(2)多或者少开放端口不得分

任务1步骤:

  1. 创建

    vim Dockerfile
    

    文件(无后缀名),内容如下:

    FROM httpd
    MAINTAINER [email protected]
    EXPOSE 80
    RUN echo "dockerfile test" > /usr/local/apache2/htdocs/index.html
    
  2. Dockerfile
    

    文件所在目录,执行构建命令:

    docker build -t httpd:v1 .
    
  3. 运行容器:

    docker run -d -p 80:80 httpd:v1
    
  4. 验证:在浏览器内输入 http://宿主机EIP:80 (宿主机EIP指运行Docker的机器的公网IP)。如果显示 “dockerfile test” 则成功。


任务2:搭建私有镜像仓库

得分点:成功创建私有镜像仓库并且成功上传镜像.

1.搭建私有镜像仓库,私有镜像仓库服务监听端口为5000。修改容器httpd:v1的镜像名称后,将该容器上传至私有镜像仓库。

2.在终端输入curl -X GET http://localhost:5000/v2/httpd/tags/list命令查看仓库镜像信息。出现{"name":"httpd","tags":["v1"]}结果,任务完成。

本任务中需注意以下内容:

(1)使用错误的镜像仓库监听端口不得分

(2)使用错误的镜像名称不得分

任务2步骤:

  1. 运行私有镜像仓库容器 (registry):

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    
  2. 标记

    httpd:v1
    

    镜像以上传到私有仓库 (假设私有仓库地址为localhost:5000,如果Docker宿主机本身无法解析localhost作为仓库地址,可能需要使用宿主机实际IP;对于某些Docker版本,可能需要配置insecure-registries):

    docker tag httpd:v1 localhost:5000/httpd:v1
    

    注意:如果Docker守护进程未配置信任 localhost:5000 为非安全仓库,推送会失败。您可能需要修改Docker的 daemon.json 文件,例如在 /etc/docker/daemon.json 中添加 {"insecure-registries" : ["localhost:5000"]} 并重启Docker服务。

  3. 上传镜像到私有仓库:

    docker push localhost:5000/httpd:v1
    
  4. 验证仓库中的镜像信息:

    curl -X GET http://localhost:5000/v2/httpd/tags/list
    

    预期输出:

    {"name":"httpd","tags":["v1"]}
    

任务3:容器生命周期管理

得分点:成功完成生命周期管理任务。

对httpd:v1容器及镜像执行暂停、恢复、停止、重启、删除镜像、删除镜像的操作。

输入:docker rmi httpd:v1命令,出现:Untagged: httpd:v1则证明任务完成

本任务中需注意以下内容:

(1)输入至错误文件、输入非要求内容不得分

任务3步骤:

  1. 首先确保有一个基于

    httpd:v1
    

    运行的容器(如果上一步骤中已运行,请获取其容器ID或名称;如果未运行,则先运行):

    docker run -d --name my_httpd_v1 httpd:v1
    

    假设容器名称为

    my_httpd_v1
    

    暂停容器:

    docker pause my_httpd_v1
    
  2. 恢复容器:

    docker unpause my_httpd_v1
    
  3. 停止容器:

    docker stop my_httpd_v1
    
  4. 重启容器 (此步骤中容器处于停止状态,重启会使其重新运行;如果想演示对运行中容器的重启,可以先

    docker start my_httpd_v1
    

    docker restart my_httpd_v1
    
  5. 停止并删除容器(删除镜像前必须先删除使用该镜像的容器,或者先停止容器):

    docker stop my_httpd_v1
    docker rm my_httpd_v1
    

    如果还有其他基于 httpd:v1localhost:5000/httpd:v1 的容器,也需要先停止并删除它们。

  6. 删除本地的私有仓库镜像标签 (如果任务2已执行):

    docker rmi localhost:5000/httpd:v1
    
  7. 删除

    httpd:v1
    

    镜像:

    docker rmi httpd:v1
    

    预期输出包含:

    Untagged: httpd:v1
    

云原生基础设施之容器进阶

任务1:使用cgroup实现资源限制

得分点:能对容器实现CPU限制。

运行压力测试容器progrium/stress,限制CPU使用率为70%(可输入top命令验证结果)。

在终端/sys/fs/cgroup/cpu/docker/容器ID/文件夹下,输入命令cat cpu.cfs_quota_us

显示70000则证明成功。

本任务中需注意以下内容:

(1)使用错误的限额比例不得分

(2)输入非cat cpu.cfs_quota_us的错误命令不得分

任务1步骤:

  1. 拉取progrium/stress压力测试镜像:(注意镜像源配置)

    docker pull progrium/stress
    
  2. 运行容器,限制CPU使用率 (例如,分配70%的一个核心):

    docker run -d --name my_stress --cpu-period=100000 --cpu-quota=70000 progrium/stress --cpu 1
    
  3. 获取容器的完整ID:

    docker ps --no-trunc | grep my_stress
    # 或者 docker inspect --format='{{.Id}}' my_stress
    

    记下输出的完整容器ID。

  4. 验证CPU使用率(可选): 在一个终端中运行 docker stats my_stresstop (在宿主机上,然后找到容器进程) 来观察CPU使用率。

  5. 进入cgroup目录并查看

    cpu.cfs_quota_us
    

    的值 (将

    [容器完整ID]
    

    替换为上一步获取到的ID):

    Bash

    cat /sys/fs/cgroup/cpu/docker/[容器完整ID]/cpu.cfs_quota_us
    

    预期输出:

    70000
    

任务2:搭建容器bridge网络

得分点:成功搭建bridge网络并达成容器网络互通。

1.创建用户自定义网桥,指定子网为173.18.0.0/16,网关为173.18.0.1。

2.运行两个centos容器并挂载到自定义网桥。

3.进入任意一个容器,在容器内ping另一个容器的ip地址。出现以下结果,任务完成。

输入:ping 173.18.0.2命令(此命令可以多输几次),返回下图内容

本任务中需注意以下内容:

(1)建议提前拉取centos镜像

任务2步骤:

  1. 提前拉取centos镜像 (如果未拉取):

    docker pull centos:latest
    
  2. 创建用户自定义网桥:

    docker network create --subnet=173.18.0.0/16 --gateway=173.18.0.1 my_bridge_network
    
  3. 运行第一个centos容器并连接到自定义网桥,指定IP(可选,Docker会自动分配,但为了方便测试可以指定,确保IP在子网范围内且未被占用):

    docker run -dit --name container1 --network my_bridge_network --ip 173.18.0.2 centos:latest /bin/bash
    
  4. 运行第二个centos容器并连接到自定义网桥,指定IP:

    docker run -dit --name container2 --network my_bridge_network --ip 173.18.0.3 centos:latest /bin/bash
    
  5. 进入第一个容器

    container1
    
    docker exec -it container1 /bin/bash
    
  6. container1
    

    内部,ping

    container2
    

    的IP地址 (173.18.0.3)。首先需要安装ping工具(如果CentOS最小镜像不包含):

    # 在container1的shell中
    yum install -y iputils
    ping 173.18.0.3
    

    预期会看到ping通的回复。按

    Ctrl+C
    

    停止ping。然后输入

    exit
    

    退出容器。

    如果题目要求ping 173.18.0.2,那应该是从另一个容器(比如173.18.0.3)ping它,或者宿主机上如果有对应路由的话。根据题目“ping另一个容器的ip地址”和“输入:ping 173.18.0.2命令”,假设我们运行了两个容器,一个IP是173.18.0.2,另一个是173.18.0.X,然后从173.18.0.X ping 173.18.0.2。 若第一个容器IP为173.18.0.2,第二个为173.18.0.3,则: 进入container2 (docker exec -it container2 /bin/bash),安装iputils后执行 ping 173.18.0.2


任务3:容器挂载存储卷

得分点:成功挂载volume并实现持久化存储。

使用docker managed volume挂载到容器,在容器内输入echo "this is page from docker managed volume. " > index.html。删除该容器。

在宿主机挂载原路径中通过cat index.html命令查看文件内容,出现“this is page from docker managed volume.”则任务完成。

本任务中需注意以下内容:

(1)可使用任意镜像完成该实验,如httpd、centos镜像等

任务3步骤:

  1. 创建一个Docker managed volume:

    docker volume create my_volume
    
  2. 运行一个容器 例如使用

    centos
    

    并将

    my_volume
    

    挂载到容器内的某个路径 例如

    /appdata
    
    docker run -d --name volume_test_container -v my_volume:/appdata centos:latest tail -f /dev/null
    
    tail -f /dev/null
    

    是为了让容器保持运行状态,方便执行

    exec
    
  3. 在容器内创建文件并写入内容:

    docker exec volume_test_container bash -c 'echo "this is page from docker managed volume." > /appdata/index.html'
    
  4. 删除容器:

    docker stop volume_test_container
    docker rm volume_test_container
    
  5. 查看Docker managed volume在宿主机上的实际存储路径(此步骤是为了理解,通常不直接操作此路径,但题目要求“在宿主机挂载原路径中”):

    docker volume inspect my_volume
    

    记下

    Mountpoint
    

    字段的值,例如

    /var/lib/docker/volumes/my_volume/_data
    
  6. 在宿主机上,查看该路径下的文件内容 (将

    [Mountpoint路径]
    

    替换为上一步获取到的路径):

    cd /var/lib/docker/volumes/my_volume/_data/
    cat index.html
    

    预期输出:

    this is page from docker managed volume.
    

云容器快速搭建网站

任务1:创建RDS数据库

得分点:能正确创建RDS for MySQL数据库服务。

部分参数请参考以下内容:

计费模式:按需计费

区域:华北-北京四

实例名称:rds-web(请使用该名称,否则影响任务得分)

数据库引擎:MySQL

数据库版本:5.7

实例类型:单机

存储类型:默认

可用区:默认

性能规格:通用型|2核|4GB

存储空间:40GB

虚拟私有云:选择已预置的虚拟私有云

所在子网:选择已预置的子网

安全组:选择已预置的安全组

本任务中需注意以下内容:

(1) 创建了错误的规格,不得分

(2) RDS创建成功后,需自行创建一个新的数据库、账号、密码,并完成授权,作为后续实验的环境变量使用

任务1步骤:

没什么好说的,按要求创建服务就行,记得放行端口号,可以绑个弹性IP,省的内网可能访问不到数据库


任务2:完成CCE集群的创建,并成功添加Node节点。

得分点:成功添加指定规格的Node节点。

创建CCE集群部分参数请参考以下内容:

计费模式:按需计费

区域:华北-北京四

集群名称:test(请使用该名称,否则影响任务得分)

版本:选择最新版即可

集群管理规模:50节点

高可用:否

虚拟私有云:选择已创建的虚拟私有云,如myvpc

所在子网:选择已创建的子网,如subnet-myvpc

网络模型:容器隧道网络

容器网段:自动选择

IPV4服务网段:使用默认网段

高级配置:暂不配置

插件配置:取消“容器监控”及“业务日志”

创建节点,设置参数参考如下:

计费方式:按需计费

当前区域:华北-北京四

可用区:默认

节点类型:弹性云服务器-虚拟机

容器引擎:默认

节点规格:通用型|s6.xlarge.2|4核|8GB

操作系统:EulerOS 2.9

节点名称:test-node

登录方式:密码(自行设置复杂密码)

存储配置:高IO,其余保持默认

虚拟私有云:选择已预置的vpc和子网

节点IP:随机分配

弹性公网IP:自动创建

计费方式:按流量计费,带宽5M

节点购买数量:1台

其余设置保持默认

本任务中需注意以下内容:

(1) 在新版CCE界面下执行操作任务

(2) 错误的节点规格不得分

任务1步骤:

没什么好说的,按要求创建服务就行,以下是AI生成的步骤

此任务通过华为云CCE(云容器引擎)控制台完成。

  1. 登录华为云控制台。

  2. 导航到“云容器引擎 CCE”服务。

  3. 创建集群 :

    • 点击“购买Kubernetes集群”。
    • 计费模式:按需计费
    • 区域:华北-北京四
    • 集群名称:test
    • 版本:选择最新版
    • 集群管理规模:50节点
    • 高可用:否
    • 虚拟私有云(VPC):选择已创建的虚拟私有云 (如myvpc)
    • 所在子网:选择已创建的子网 (如subnet-myvpc)
    • 网络模型:容器隧道网络
    • 容器网段:自动选择
    • IPV4服务网段:使用默认网段
    • 高级配置:暂不配置
    • 插件配置:取消勾选“容器监控”和“业务日志”
    • 确认配置并创建集群骨架(控制面)。
  4. 等待集群控制面创建成功。

  5. 创建节点

    (在集群管理界面,选择对应集群,点击“节点管理” → “创建节点”):

    • 计费方式:按需计费

    • 当前区域:华北-北京四

    • 可用区:默认 (或根据实际情况选择)

    • 节点类型:弹性云服务器-虚拟机

    • 容器引擎:默认

    • 节点规格:通用型 | s6.xlarge.2 | 4核 | 8GB

    • 操作系统:EulerOS 2.9

    • 节点名称:test-node

    • 登录方式:密码 (自行设置复杂密码)

    • 系统盘/数据盘存储配置:系统盘通常为高IO,大小默认或按需;数据盘根据需要(题目中为高IO,其余默认)。

    • 虚拟私有云:选择已预置的VPC和子网 (应与集群VPC一致)

    • 节点IP:随机分配

    • 弹性公网IP

      :自动创建

      • 计费方式:按流量计费
      • 带宽:5Mbit/s
    • 节点购买数量:1台

    • 其余设置保持默认。

  6. 确认配置并创建节点。等待节点成功添加到集群。


任务3:通过华为云镜像中心部署无状态工作负载WordPress,并通过外网访问WordPress页面。

得分点:能通过http://ip:端口号成功访问网站登录页面。

WordPress无状态工作负载的创建参数如下:

负载名称:wordpress

实例数量:1

镜像版本:php7.3

WordPress访问类型:LoadBalancer

访问端口:80

容器端口:80

此外需要设置环境变量,此处一共需要设置四个环境变量:

WORDPRESS_DB_HOST:数据库内网IP地址:端口号

WORDPRESS_DB_USER:(与前面mysql创建的账号名称一致)

WORDPRESS_DB_PASSWORD:(与前面mysql创建的账号时设置的密码一致)

WORDPRESS_DB_NAME:(与前面mysql创建的数据库名称一致)

任务3步骤:

  1. 确保CCE集群(名为test)和RDS数据库(名为rds-web)已按前述任务要求创建并准备就绪。获取任务1中创建的RDS数据库的内网IP地址、端口号、数据库名、用户名和密码。

  2. 在CCE控制台,选择test集群。

  3. 导航到“工作负载” → “无状态负载 (Deployments)”,点击“使用镜像创建”。

    • 或者,部分控制台可能直接有“通过镜像仓库创建”或市场应用。题目指明“通过华为云镜像中心部署”,具体路径可能为 “应用市场” → 搜索 “WordPress”,然后选择部署到CCE。如果直接创建工作负载:
  4. 配置工作负载:

    • 负载名称:wordpress

    • 实例数量:1

    • 容器配置 :

      • 点击“选择镜像”。
      • 镜像来源选择“华为云SWR镜像”(或公共镜像,搜索WordPress)。题目指定“镜像版本:php7.3”,需要找到对应的WordPress镜像,例如 wordpress:php7.3
      • 容器端口:80
    • 环境变量

      (非常重要):

      • 添加以下四个环境变量:(注意安全组放行3306)
        • WORDPRESS_DB_HOST = [RDS数据库内网IP地址]:[RDS端口号] (例如 192.168.1.10:3306)
        • WORDPRESS_DB_USER = [任务1中创建的RDS用户名]
        • WORDPRESS_DB_PASSWORD = [任务1中创建的RDS用户密码]
        • WORDPRESS_DB_NAME = [任务1中创建的RDS数据库名]
    • 访问设置 (服务):

      • 访问类型:LoadBalancer ,即负载均衡(弹性公网IP)
      • 协议:TCP
      • 容器端口:80
      • 访问端口 (服务端口):80
  5. 检查其他配置,然后点击“创建负载”。

  6. 等待工作负载和LoadBalancer类型的服务创建完成。服务创建完成后,在“服务发现与负载均衡 (Services)”或“网络” → “服务 (Services)”部分找到名为wordpress(或类似)的服务。

  7. 获取该服务的外部IP地址(弹性公网IP)。

  8. 在浏览器中输入 http://[外部IP地址]:80。应能看到WordPress的安装或登录页面。


CCE网络与存储实战

任务1:创建CCE集群

得分点:能按要求成功配置CCE集群

提示:集群创建预计需要10分钟左右,可以单击“返回集群管理”进行其它操作或单击“查看集群事件列表”后查看集群详情。为节约时间,可在集群创建期间进入任务2,进行kubectl的安装操作。

  1. CCE集群的配置参数如下: 计费模式: 按需付费 区域:华为-北京四 集群名称: cce-k8s 自定义版本: V1.21 集群管理规模: 50节点 网络模型: 容器隧道网络 虚拟私有云: vpc-cce(已预置) 控制节点子网: subnet-cce(已预置) 容器网段: 勾选"自动选择" 服务网段: 使用默认网段 其余参数: 保持默认
  2. CCE集群下创建节点: 计费模式: 按需付费 节点规格:c6s.xlarge.2 4核|8GB 操作系统:选择公共 镜像EulerOS 2.5 节点名称:cce-k8s-node-01 登录方式:选择“密码”,此处建议使用:Huawei@1234 系统盘/数据盘:高IO,40G 虚拟私有云所在子网,选择默认子网 弹性公网IP:选择“自动创建” 规格:全动态BGP 计费模式:按流量计费, 带宽大小 :5M 其余参数保持默认即可 任务中需注意以下内容: (1)按需购买资源,并按指导参数配置CCE集群,否则不得分。 (2)若规定节点规格有售罄情况,请选择相近规格ECS作为集群Node节点。

任务1步骤:

此任务通过华为云CCE控制台完成。

  1. 登录华为云控制台。

  2. 导航到“云容器引擎 CCE”服务。

  3. 创建集群控制面 :

    • 点击“购买Kubernetes集群”或“创建集群”。
    • 计费模式: 按需付费
    • 区域: 华为-北京四
    • 集群名称: cce-k8s
    • 版本: 自定义版本 V1.21 (若控制台界面有变,选择最接近的或指定版本)
    • 集群管理规模: 50节点
    • 网络模型: 容器隧道网络
    • 虚拟私有云(VPC): vpc-cce (选择已预置)
    • 控制节点子网: subnet-cce (选择已预置)
    • 容器网段: 勾选 “自动选择”
    • 服务网段: 使用默认网段
    • 其余参数: 保持默认
    • 确认并创建集群控制面。
  4. 等待集群控制面创建成功。

  5. 创建节点

    (在集群管理界面,选择

    cce-k8s
    

    集群,点击“节点管理” → “创建节点”或“添加节点”):

    • 计费模式: 按需付费

    • 节点规格:c6s.xlarge.2 (4核 | 8GB)

    • 操作系统:选择公共镜像 EulerOS 2.5

    • 节点名称:cce-k8s-node-01

    • 登录方式:选择“密码”,密码设置为 Huawei@1234

    • 系统盘: 高IO,40G

    • 数据盘: 高IO,40G (题目中系统盘/数据盘一起描述,通常指系统盘40G,数据盘也设置为40G高IO,或根据界面具体选项调整)

    • 虚拟私有云所在子网:选择默认子网 (应为vpc-cce下的可用子网)

    • 弹性公网IP

      :选择“自动创建”

      • 规格:全动态BGP
      • 计费模式:按流量计费
      • 带宽大小:5Mbit/s
    • 其余参数: 保持默认

  6. 确认配置并创建节点。等待节点成功加入集群。


任务2:安装并配置kubectl

得分点:能在ecs-terminal中正确安装kubectl客户端

提示:kubectl具体的安装步骤以及配置文件的下载路径可参考:“CCE集群 > 集群信息 > 连接信息 > kubectl>点击查看 ”

提示:下载的json文件默认放置在以下路径: /home/user/Downloads/kubeconfig.json

kubectl客户端(v1.19.10)的下载链接如下: https://dl.k8s.io/v1.19.10/kubernetes-client-linux-amd64.tar.gz

kubectl安装并配置完成后,使用以下命令验证其安装结果:

kubectl get node

若回显如下,则表示安装配置成功:

任务中需注意以下内容:

(1)kubectl应配置于ecs-terminal,否则不得分

(2)使用kubectl get node 后若不返回node节点信息则不得分

任务2步骤:

此任务在 ecs-terminal (通常指预置的或用户自行准备的用于管理集群的ECS/Linux环境) 中执行。

  1. 登录到 ecs-terminal

  2. 下载kubectl客户端 (v1.19.10):

    Bash

    wget https://dl.k8s.io/v1.19.10/kubernetes-client-linux-amd64.tar.gz
    
  3. 解压下载的压缩包:

    Bash

    tar -zxvf kubernetes-client-linux-amd64.tar.gz
    
  4. 将kubectl二进制文件移动到系统路径下,例如

    /usr/local/bin
    
    sudo mv kubernetes/client/bin/kubectl /usr/local/bin/
    sudo chmod +x /usr/local/bin/kubectl
    
  5. 验证kubectl版本:

    kubectl version --client
    
  6. 配置kubectl连接集群

    • 在华为云CCE控制台,选择 cce-k8s 集群。

    • 导航到 “集群信息” → “连接信息” → “kubectl”,点击“点击查看”。

    • 按照指引下载 kubeconfig.json 文件。用scp命令传到服务器上

      user@sandbox:~/Downloads$ ls
      cce-k8s-kubeconfig.yaml
      user@sandbox:~/Downloads$ realpath cce-k8s-kubeconfig.yaml
      /home/Downloads/cce-k8s-kubeconfig.yaml
      user@sandbox:~/Downloads$ scp /home/Downloads/cce-k8s-kubeconfig.yaml [email protected]:/home
      

      之后按连接信息给的命令继续就行,这里我忘了复制官方的命令,考试时候自己看吧

  7. 验证kubectl配置和节点连接:

    kubectl get node
    

    预期会显示

    cce-k8s-node-01
    

    节点的信息及其状态 ,例如

    Ready
    

任务3:创建Deployment

得分点:按照指示在执行机上查看创建后的Deployment

于CCE集群cce-k8s创建如下Deployment工作负载:

创建Service实1验使用的目录:labfile/servicefile

后端nginx Deployment: nginx-deploy.yaml

nginx-deploy.yaml代码如下:

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx

spec:

replicas: 3

selector:

matchLabels:

app: nginx

template:

metadata:

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx

ports:

- containerPort: 80

提示:

kubectl命令语法:kubectl [command] [TYPE] [NAME] [flags]

Command:指定希望进行的操作,如create,get,describe,delete等。

TYPE:指定操作对象的类型,如deployment,pod,service等。

NAME:指定对象的名字。

flags: 可选的标志位。如–namespace=xxx, --image=xxx等。

任务3步骤:

在 ecs-terminal (已配置好kubectl) 中执行。

  1. 创建目录 (如果题目明确要求在此目录下操作):

    mkdir -p labfile/servicefile
    cd labfile/servicefile
    
  2. 创建

    nginx-deploy.yaml
    

    文件,内容如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx # 默认使用nginx:latest
            ports:
            - containerPort: 80
    
  3. 使用kubectl应用该YAML文件创建Deployment:

    kubectl apply -f nginx-deploy.yaml
    
  4. 查看创建的Deployment:

    kubectl get deployment nginx
    # 或者查看pod状态
    # kubectl get pods -l app=nginx
    

    预期会看到名为

    nginx
    

    的Deployment,并且有3个副本正在创建或已运行。


任务4:创建service服务

得分点:在CCE控制台-服务发现-服务中查看到nginx-svc

创建nginx-service.yaml

创建service

查看service中的endpoints

nginx-service.yaml代码如下:

apiVersion: v1

kind: Service

metadata:

name: nginx-svc

spec:

selector:

app: nginx

ports:

protocol: TCP port: 8080 targetPort: 80

任务4答案:

在 ecs-terminal (已配置好kubectl,建议在 labfile/servicefile 目录下) 中执行。

  1. 创建

    nginx-service.yaml
    

    文件,内容如下:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-svc
    spec:
      selector:
        app: nginx # 这个selector要匹配上一步Deployment中Pod的label
      ports:
      - protocol: TCP
        port: 8080      # Service暴露的端口
        targetPort: 80  # Pod内容器实际监听的端口
      # type: ClusterIP # 默认为ClusterIP,如果需要外部访问,可以改为NodePort或LoadBalancer,但题目未指定
    
  2. 使用kubectl应用该YAML文件创建Service:

    kubectl apply -f nginx-service.yaml
    
  3. 查看创建的Service:

    kubectl get service nginx-svc
    
  4. 查看Service的Endpoints (这会显示Service关联到的Pod的IP和端口):

    kubectl get endpoints nginx-svc
    

    预期会看到与

    nginx
    

    Deployment中3个Pod对应的IP地址和端口。

  5. 验证:登录华为云CCE控制台,进入 cce-k8s 集群,在“服务发现”或“网络” → “服务 (Services)”中应能查看到名为 nginx-svc 的服务。


基于CCE Kubernetes编排实战

实验一:创建CCE集群及创建节点

任务1:创建CCE集群及创建节点

得分点:能按要求成功配置CCE集群

提示:集群创建预计需要10分钟左右,可以单击 “查看集群事件列表”后查看集群详情。为节约时间,可在集群创建期间进入实验二,进行kubectl的安装操作。

  1. CCE集群的配置参数如下,其余参数请保持默认。 计费模式: 按需付费 区域:华为-北京四 集群名称: 请命名为cce-k8s,否则无法进行验证 集群版本: 选择推荐的版本 集群管理规模: 50节点 集群Master数:单节点 虚拟私有云: vpc-cce(实验已预置) 网络模型: 容器隧道网络 容器网段: 选择“自动设置网段” 服务网段: 使用默认网段 插件选择:关闭云原生监控插件 其余参数: 保持默认
  2. 节点配置参数如下,其余参数请保持默认。 计费模式:按需付费 可用区:选择“随机分配” 节点名称:自定义节点名称,建议使用cce-k8s-node-01 节点规格:c6s.xlarge.2,4核|8GB 容器引擎:Containerd 操作系统:选择“公共镜像EulerOS 2.9” 系统盘:高IO,40GiB 数据盘:高IO,100GiB 虚拟私有云所在子网:选择默认子网 弹性IP:选择“自动创建” 规格:全动态BGP 计费模式:按流量计费 带宽大小 :5M 登录方式:选择“密码”,自定义登录密码 本任务中需注意按需购买资源,并按指导参数配置CCE集群,否则不得分。

任务1步骤:

略,以下AI生成

此任务通过华为云CCE控制台完成。

  1. 登录华为云控制台。

  2. 导航到“云容器引擎 CCE”服务。

  3. 创建集群控制面

    • 点击“购买Kubernetes集群”或“创建集群”。
    • 计费模式: 按需付费
    • 区域: 华为-北京四
    • 集群名称: cce-k8s (务必使用此名称)
    • 集群版本: 选择推荐的版本
    • 集群管理规模: 50节点
    • 集群Master数: 单节点
    • 虚拟私有云(VPC): vpc-cce (选择实验已预置)
    • 网络模型: 容器隧道网络
    • 容器网段: 选择“自动设置网段”
    • 服务网段: 使用默认网段
    • 插件选择: 关闭云原生监控插件
    • 其余参数: 保持默认
    • 确认并创建集群控制面。
  4. 等待集群控制面创建成功。

  5. 创建节点

    (在集群管理界面,选择

    cce-k8s
    

    集群,点击“节点管理” → “创建节点”或“添加节点”):

    • 计费模式: 按需付费

    • 可用区: 选择“随机分配”

    • 节点名称: 自定义,建议 cce-k8s-node-01

    • 节点规格: c6s.xlarge.2 (4核 | 8GB)

    • 容器引擎: Containerd

    • 操作系统: 选择“公共镜像 EulerOS 2.9”

    • 系统盘: 高IO,40GiB

    • 数据盘: 高IO,100GiB

    • 虚拟私有云所在子网: 选择默认子网 (应为vpc-cce下的可用子网)

    • 弹性公网IP

      : 选择“自动创建”

      • 规格: 全动态BGP
      • 计费模式: 按流量计费
      • 带宽大小: 5Mbit/s
    • 登录方式: 选择“密码”,自定义登录密码。

    • 其余参数: 保持默认

  6. 确认配置并创建节点。等待节点成功加入集群。


实验二:使用kubectl操作CCE集群

任务1:安装并配置kubectl

得分点:能在ecs-terminal中正确安装kubectl客户端。

提示信息如下:

  1. kubectl具体的安装步骤以及配置文件的下载路径可参考:“CCE控制台 > 集群管理 > 集群cce-k8s > 连接信息 > kubectl”
  2. kubectl客户端安装完成后,其配置文件所在路径:kubernetes/client/bin/kubectl (此为kubectl二进制文件路径,配置文件通常是kubeconfig)
  3. kubectl客户端的下载链接如下: https://sandbox-experiment-files.obs.cn-north-4.myhuaweicloud.com/1993/kubernetes-client-linux-amd64.tar.gz
  4. kubectl安装并配置完成后,使用以下命令验证其安装结果: kubectl get node 若回显如下,则表示安装配置成功: 本任务中需注意以下内容: kubectl应配置于ecs-terminal,否则不得分 使用kubectl get node 后若不返回node节点信息则不得分

任务2步骤:

此任务在 ecs-terminal (预置的或用户自行准备的用于管理集群的ECS/Linux环境) 中执行。

  1. 登录到 ecs-terminal

  2. 下载kubectl客户端:

    wget https://sandbox-experiment-files.obs.cn-north-4.myhuaweicloud.com/1993/kubernetes-client-linux-amd64.tar.gz
    
  3. 解压下载的压缩包:

    tar -zxvf kubernetes-client-linux-amd64.tar.gz
    
  4. 将kubectl二进制文件移动到系统路径下 (例如

    /usr/local/bin
    

    ) 并赋予执行权限:

    # 解压后,kubectl通常在 kubernetes/client/bin/ 目录下
    sudo mv kubernetes/client/bin/kubectl /usr/local/bin/
    sudo chmod +x /usr/local/bin/kubectl
    
  5. 验证kubectl版本(可选):

    kubectl version --client
    
  6. 配置kubectl连接集群:

    • 在华为云CCE控制台,选择 cce-k8s 集群。
    • 导航到 “集群管理” → 选择 cce-k8s 集群 → “连接信息” → “kubectl”。
    • 按照指引下载 kubeconfig 文件(通常是一个JSON文件或YAML文件)。将其下载到 ecs-terminal
    • 略,连接信息有命令提示
  7. 验证kubectl配置和节点连接:

    kubectl get node
    

    预期会显示

    cce-k8s-node-01
    

    (或您自定义的节点名称) 的信息及其状态

    Ready
    

任务2:创建并使用名为“production”的namespace

得分点:于预制CCE集群创建指定namespace

于CCE集群cce-k8s创建namespace,命名为production

本任务中需注意:namespace命名不匹配不得分

任务2步骤:

在 ecs-terminal (已配置好kubectl) 中执行。

  1. 创建名为

    production
    

    的namespace:

    kubectl create namespace production
    
  2. 验证创建(可选):

    kubectl get namespace production
    

    预期输出:

    NAME STATUS AGE
    
    production Active ...s
    

任务3:创建并使用名为“testing”的namespace

得分点:于预制CCE集群创建指定namespace

于CCE集群cce-k8s创建namespace命名为testing

本任务中需注意:namespace命名不匹配不得分

任务3步骤:

在 ecs-terminal (已配置好kubectl) 中执行。

  1. 创建名为

    testing
    

    的namespace:

    kubectl create namespace testing
    
  2. 验证创建(可选):

    kubectl get namespace testing
    

    预期输出:

    NAME STATUS AGE
    
    testing Active ...s
    

实验三:在CCE集群中部署Deployment工作负载

任务1:使用Deployment部署Nginx

得分点:按照要求成功创建Deployment负载

提示信息如下:

kubectl命令语法:kubectl [command] [TYPE] [NAME] [flags]

Command:指定希望进行的操作,如create,get,describe,delete等。

TYPE:指定操作对象的类型,如deployment,pod,service等。

NAME:指定对象的名字。

flags: 可选的标志位。如–namespace=xxx, --image=xxx等。

于CCE集群cce-k8s创建如下Deployment工作负载:

名称:nginx

命名空间:production

副本数:2

镜像:niginx:1.7.9 (注意:此处可能是笔误,通常为 nginx)

本任务中需注意:名称、命名空间、副本、镜像版本若不匹配均不得分。

任务1步骤:

在 ecs-terminal (已配置好kubectl) 中执行。

  1. 使用kubectl命令直接创建Deployment: (假设 “niginx” 为笔误,实际应为 “nginx”。如果题目严格要求 “niginx”,则使用 “niginx”)

    kubectl create deployment nginx --image=nginx:1.7.9 --replicas=2 --namespace=production
    

    如果严格按照题目中的 “niginx”:

    kubectl create deployment nginx --image=niginx:1.7.9 --replicas=2 --namespace=production
    
  2. 验证Deployment是否成功创建并在指定命名空间中:

    kubectl get deployment nginx --namespace=production
    

    预期输出应显示名为

    nginx
    

    的Deployment,DESIRED为2,CURRENT为2 (可能需要一点时间达到),READY为2。

  3. 查看Pod状态:

    kubectl get pods --namespace=production -l app=nginx 
    # kubectl create deployment 会自动给pod打上 app=nginx 的标签
    

    预期会看到两个Pod正在运行或创建中。


任务2:更新Deployment

得分点:按照要求更新任务1已创建的Deployment负载

提示:以下命令可用于Deployment的更新

$ kubectl edit deployment

$ kubectl scale deployment

$ kubectl set image deployment

按照以下要求更新已创建的Deployment:

副本数:2 → 3

镜像:niginx:1.7.9 → niginx:1.9.1 (注意:此处可能是笔误,通常为 nginx)

本任务中需注意:若Deployment负载的副本数、镜像版本未按要求更新则不得分。

任务2步骤:

在 ecs-terminal (已配置好kubectl) 中执行。

  1. 更新副本数从2到3 (针对名为 nginx 的Deployment,在 production 命名空间):

    kubectl scale deployment nginx --replicas=3 --namespace=production
    
  2. 更新镜像版本从 nginx:1.7.9 (或 niginx:1.7.9) 到 nginx:1.9.1 (或 niginx:1.9.1):

    不知道官方故意还是写错了,写的镜像niginx:1.7.9,不过不影响考试步骤,就按niginx:1.7.9来吧,看你喜欢哪个命令

    (假设 “niginx” 为笔误,实际应为 “nginx”。如果题目严格要求 “niginx”,则使用 “niginx”)

    kubectl set image deployment/nginx nginx=nginx:1.9.1 --namespace=production
    # 如果Deployment中的容器名不是nginx,而是例如 my-nginx-container,则用 my-nginx-container=nginx:1.9.1
    # 通常 kubectl create deployment nginx 会创建一个名为 nginx 的容器
    

    如果严格按照题目中的 “niginx”:

    kubectl set image deployment/nginx nginx=niginx:1.9.1 --namespace=production 
    # 这里的 nginx= 是指容器的名字,如果创建时容器名不同,需要相应修改
    

    为了确保容器名正确,可以先 kubectl describe deployment nginx -n production 查看容器名。通常 kubectl create deployment <name> 会创建一个名为 <name> 的容器。

  3. 验证更新后的Deployment状态:

    kubectl get deployment nginx --namespace=production
    

    预期输出应显示 nginx Deployment,DESIRED为3,CURRENT为3,READY为3 (可能需要一点时间完成更新)。

  4. 验证Pod的镜像版本 (可以抽查一个Pod):

    kubectl describe pod [pod名称] --namespace=production | grep Image:
    # 先用 kubectl get pods -n production 获取一个新创建的Pod名称
    

    预期Image字段显示为 nginx:1.9.1 (或 niginx:1.9.1)。

注:我这里镜像没拉成功,但还是100分通过了,这个镜像名称是nginx:1.9.1应该没影响

6 个赞

好长的文,看着有点累。 谢谢分享。

感谢分享 :xhj006:

感谢分享 很详细

这么多,厉害了。

我还没开始,大佬们就结束了 :sweat_smile:

沃日,看起来好费事啊。

好帖当顶!

666 我就考了一个

感谢大佬分享

谢谢分享,太详细了啊

没看完 就睡着了 呵呵