注意:进入实验环境后系统会自动预置环境,显示“资源准备中,预计需要1~2分钟,请耐心等待”,实验环境预置成功后显示如下。
预置实验环境需几分钟,成功后将会创建本实验所需的云资源(例如VPC、安全组或云服务器)。
进入【实验操作桌面】,点击【一键登录】,可自动登录并进入华为云控制台页面。
注意:进入华为云控制台后,请确保右上角的实验账号与手册左上角提供的账号信息一致,切勿使用您自己的华为云账号登录。
1. 登录完成后,鼠标移动到云桌面浏览器页面中左上角,点击“服务列表”,搜索“CCE”,点击“云容器引擎CCE”,进入云容器引擎CCE控制台,如下图所示:
选择“CCE Standard 集群”,点击“创建”,进入云容器引擎CCE购买页面。
配置参数如下:
① 计费模式:按需计费
② 集群名称:cce01
③ 集群版本:v1.35 或选择其他推荐版本(本实验手册以v1.35为例)
④集群委托:使用已有委托,CCEAutoClusterAgency,勾选“我确认委托已授予集群所需的权限。”
⑤ 集群规模:50节点
⑥集群master实例数:单实例
⑦虚拟私有云&子网:预置环境预置的VPC和子网
⑧ 节点默认安全组:点击“选择已有”,再在下拉列表里选中“sg-hce”,并勾选橙色的声明,如图:
⑨ 网络模型&容器网段:容器隧道网络 ,自动设置网段
⑩ 服务转发模式:iptables
其它参数默认。点击“下一步:插件选择”:
只保持默认安装的插件,其他勾选都取消,点击“下一步:插件配置”。
在插件配置页面,点击“调整配置”,参数如下:
委托配置:使用已有委托
选择委托:CCEAutoClusterAgency
勾选 “我确认委托已授予插件所需的权限。”
其他配置默认即可
调整配置后,点击“下一步:确认配置”。
在确认配置页面,勾选“我已阅读并知晓上述使用说明”,点击“提交”。
点击“返回集群管理”,等待集群创建完成【大约8分钟】,集群显示“运行中”。
2. 完成集群创建后,在集群管理页面点击右侧“创建节点”进入“创建节点”步骤。
配置参数如下:
① 计费模式:按需计费
② 可用区:随机分配
③ 节点类型:弹性云服务器-虚拟机
④ 节点规格:c7.xlarge.2
说明:若规格售罄,可选择同规格 4u8G的其他资源,请按照规格大小购买,若超出规格,平台会自动删除资源
⑤ 容器引擎:Containerd
⑥ 操作系统:公共镜像 Huawei Cloud EulerOS 2.0
⑦ 节点名称:cce01-node1
⑧ 密码:按系统要求设置密码
⑨ 系统盘:高IO 50G
⑩ 数据盘:高IO 100G
⑫ 虚拟私有云:默认
⑬ 节点子网:选择默认
⑭ 节点IP:自动分配
⑮ 弹性公网IP:自动创建
⑯ 线路:全动态BGP 按带宽计费 5M ,请按照建议大小购买,若超出规格,平台会自动删除资源
确认无误,勾选协议后,点击“提交”。
创建完成,等待3-5min,可以看到节点池创建完成,可调度。
1. 鼠标移动到云桌面浏览器页面中左侧菜单栏,点击“服务列表”->搜索“ECS”->点击“弹性云服务器 ECS”,进入控制台,如下图所示:
2. 在弹性云服务器管理控制界面,单击“购买弹性云服务器”。
基础配置参数如下:
选择 自定义购买
① 计费模式:按需计费
② 区域:北京四
③ 可用区:随机分配
④ CPU架构:x86计算
⑤ 规格:通用计算增强型 | c7.large.2 | 2vCPUs | 4 GiB
说明:若规格售罄,可选择同规格 2u4G的其他资源,请按照规格大小购买,若超出规格,平台会自动删除资源
⑥ 镜像:公共镜像 | CentOS 7.6 64bit(10GB)
⑦ 安全防护:取消勾选
⑧ 系统盘:高IO | 40 G
网络配置参数如下:
① 网络:必须与CCE集群所在的VPC相同
② 扩展网卡:默认配置
③ 安全组:sg-hce
④ 弹性公网IP:现在购买
⑤ 线路:全动态BGP
⑥ 公网带宽:按流量计费
⑦ 带宽大小:5MB ,请按照建议大小购买,若超出规格,平台会自动删除资源
⑧ 云服务器名称:ecs-k8s
⑨ 登录凭证:密码
⑩ 密码:按系统要求设置密码
其余参数默认即可。
确认配置无误,单击“立即购买”后,点击返回云服务器列表。当状态为“运行中”表示已创建完成。
在远程操作之前首选需要进行安全组的配置,点击右侧导航栏“安全组”,找到sg-hce安全组然后点击“配置规则”:
接下来点击“入方向规则”然后点击“一键放通常用端口”最后点击确定:
1. 接下来,双击实验桌面的“Xfce终端”打开Terminal,输入以下命令登录云服务器。
注意:后续操作请保持Terminal窗口与云服务器的链接状态,以确保所有操作都执行在云服务器上。
注意:请使用云服务器ecs-k8s的公网IP替换命令中的【EIP】。
LANG=en_us.UTF-8 ssh root@EIP
说明:云服务器的弹性公网IP地址可以通过鼠标移动到云桌面浏览器页面中左侧菜单栏,点击服务列表->“计算”->“弹性云服务器ECS”进入服务器列表,进查看并复制。
2. 接受秘钥输入“yes”,回车;
3. 输入密码:创建ECS时设定的密码(输入密码时,命令行窗口不会显示密码,输完之后直接键入回车)。
成功登录云服务器之后如下图所示(实验过程中请勿关闭该Terminal窗口,否则需要重复此步骤重新建立连接):
ECS登录密码获取,点击【实验资源信息】右侧下拉展开查看,或点击眼睛图标查看预置环境信息:
1.4.1 下载kubectl
1. 下载kubectl配置文件。
云容器引擎控制台界面,点击创建的云容器引擎名称进入集群信息界面,下拉至连接信息,点击kubectl后的“配置”。
2. 选择有效期及 JSON 格式后,点击“下载”。
3.
3. 将下载的kubectl配置文件复制到到实验的操作桌面。
4. 完成后,重新打开一个Xfce终端窗口,将上一步②中下载到实验桌面的kubectl配置文件kubeconfig.json上传到ecs-k8s中
注意:请使用云服务器ecs-k8s的弹性公网IP替换命令中的【EIP】。
scp /home/user/Desktop/cce01-kubeconfig.json root@EIP:/root
1.4.2 安装和配置kubectl
1. 在登录弹性云服务器ecs-k8s的Xfce终端上,下载kubectl,并将kubectl和配置文件拷贝到/home目录下。
cd ~
wget https://edu-res.hc-cdn.cn/sharedata/hdinnovation/sandbox/lab2024/20221021/kubernetes-client-linux-amd64.tar.gz
ls
tar -zxvf kubernetes-client-linux-amd64.tar.gz
cp /root/kubernetes/client/bin/kubectl /home/
cp cce01-kubeconfig.json /home/
cd /home
2. 如kubectl没有可执行权限,增加权限:
chmod +x kubectl
获得执行权限后,将文件移动到/usr/local/bin目录:
mv kubectl /usr/local/bin
3. 将配置文件复制到$HOME/.kube/config文件中。
mkdir $HOME/.kube
cp cce01-kubeconfig.json $HOME/.kube/config
4. 切换kubectl的访问模式为VPC网络内接入访问。
kubectl config use-context internal
1.4.3 验证kubectl安装结果
kubectl cluster-info
1. 使用如下命令查看kubectl中可用的[COMMAND]。
kubectl --help
2. 使用如下命令查看kubectl中get命令的详细说明,使用样例:
kubectl get --help
1. 查看节点状态。
kubectl get node
2. 查看现有namespace。
kubectl get namespace
3. 创建namespace。
kubectl create namespace new-namespace
4. 再次查看namespace列表。
kubectl get namespace
5. 删除新创建的namespace。
kubectl delete namespace new-namespace
1. 创建一个Deployment。
kubectl create deployment mydep --image=nginx
2. 通过命令行查看Deployment。
kubectl get deploy
3. 使用kubectl describe命令查看资源对象的详细信息。
kubectl describe deployment mydep
4. 通过CCE控制台查看Deployment。点击控制台中的工作负载—>无状态负载,可以看到创建的工作负载mydep。点击并进入工作负载详情页面。
1. 使用kubectl get命令,get all可以查看所有对象。
kubectl get all
2. 查看指定namespace的对象。
kubectl get all -n kube-system
3. 以交互模式查看对象的变化,按ctrl+c退出交互模式。
kubectl get deployment -w
4. 查看完整的对象信息。
kubectl get deployment -o wide
1. 在master节点创建/labfile/deployfile目录,用于保存配置文件。后续创建deployment的yaml文件保存在此处。
cd /
mkdir labfile
cd labfile/
mkdir deployfile
cd deployfile/
2. 创建deployment文件。
vim nginx-deployment.yaml
按'i'键进行编辑,文件内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25.3
ports:
- containerPort: 80
3. 按Esc键退出编辑,输入":wq"保存并退出,部署nginx-deployment。
kubectl apply -f nginx-deployment.yaml
4. 查看创建结果。
kubectl describe deployment nginx-deployment
kubectl get deployment
5. 查看Pod(等待约 2分钟,才会显示 Running状态)。
kubectl get pod
6. 同样的,可以在CCE控制台中,刷新一下查看副本数及pod。
点击nginx-deployment,进入工作负载详情,下拉,在实例列表中可以看到pod的名称。
1. 编辑之前创建的nginx-deployment.yaml文件,将副本数量“replicas”改为5。
vim nginx-deployment.yaml
按“i”键进行编辑,编辑第8行replicas的内容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 5
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25.3
ports:
- containerPort: 80
2. 按Esc键退出编辑,输入":wq"保存并退出,然后应用变更后的nginx-deployment.yaml文件。
kubectl apply -f nginx-deployment.yaml
3. 查看pod状态,确认Pod数量是否正确。
kubectl get pod
4. 回到刚才实例列表页面,刷新一下可以看到pod实例扩展到5个了。
受环境影响,可能会有pod实例出现异常,可先做下面的实验。
5. 删除创建的deployment。
kubectl delete deployment nginx-deployment
DaemonSet 可以做一个守护进程的控制器。此处实验以fluentd日志收集系统为例,进行部署。
1. 创建文件夹,用于保存DemmonSet和Job文件。
mkdir /labfile/daemonfile
cd /labfile/daemonfile/
2. 创建DaemonSet的yaml文件。
vim DaemonSet.yaml
按“i”键进行编辑,内容如下:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
namespace: kube-system
labels:
k8s-app: nginx-daemonset
spec:
selector:
matchLabels:
name: nginx-daemonset
template:
metadata:
labels:
name: nginx-daemonset
spec:
containers:
- name: nginx-daemonset
image: nginx:alpine
3. 按Esc键退出编辑,输入":wq"保存并退出,然后创建DaemonSet。
kubectl apply -f DaemonSet.yaml
4. 查看创建的DaemonSet。此处, 需要在命令行中通过--
namespace=kube-system指定namespace kube-system。若不指定,则只
返回默认namespace default中的资源。实验中只有一个Node节点,所以运行的daemonset也只有1个。
kubectl get daemonset --namespace=kube-system
5. 查看DaemonSet中Pod信息。
kubectl get pod --namespace=kube-system -o wide
6. 在CCE集群界面,点击左侧“工作负载”->“守护进程集”,在守护进程集中点击上边的命名空间,点击下拉箭头,选择kube-system。
可以点击工作负载名称,进入实例列表,查看实例的详情信息。
1. 删除任意一个Pod。
注意:用4.1步骤第(5)处查询的Pod名称替换下方命令中的【Pod名称】
kubectl delete pod [Pod名称] --namespace=kube-system
2. 查看DaemonSet自动恢复功能。
kubectl get pod --namespace=kube-system
3. 退出弹性云服务器ECS,本实验结束。
exit
至此,实验全部完成!