云原生容器Clouder认证:容器应用与集群管理
基本概念
Kubernetes中涉及到的关键名词包含以下这些,他们重要但很抽象,建议您先记住这些名词和概念,在本课程中我们将结合后续实际操作步骤为您展开介绍。
- Pod(容器组):Pod是一个逻辑概念,是一组紧密关联的容器的集合。
- Controller(控制器):控制器通过控制循环监控集群状态,将当前状态转变为期望状态。控制器包含节点控制器、命名空间控制器、工作负载控制器等多种。
- Workload(工作负载):工作负载是在 Kubernetes 上运行的应用程序,分为无状态、有状态、任务、定时任务等多种类型。
- Service(服务):将运行在一个或一组Pod上的应用程序公开为网络服务的方法,是真实应用服务的抽象。
- PV、PVC:PV是存储卷,是集群内的存储资源,PV独立于Pod的生命周期。PVC是存储卷声明,是资源的使用者。Pod挂载PVC,PVC消耗PV资源。
- Namespace(命名空间):命名空间为容器集群提供虚拟的隔离作用。
- etcd:etcd是一个分布式、一致且高可用的键值存储系统,通常被用作Kubernetes所有集群数据的后台数据库。
容器集群的管理节点
- API Server:Kubernetes集群的统一服务入口,负责资源的认证、鉴权以及CRUD(增删改查)等操作,提供Restful API接口,提供其他模块之间数据交互和通信的枢纽,API Server接收客户端发起的控制资源对象的API请求,将期望状态存储到etcd中。
- Controller Manager:所有资源对象的自动化控制中心,完成对集群内Node、Pod、Service等资源状态的管理,确保集群始终处于预期的工作状态;
- Scheduler:Pod资源对象的调度服务。将待调度的 Pod 按照一定的调度算法和策略绑定到合适的Node节点上,并将绑定信息写入到 etcd 中;
- etcd:是一个分布式的存储系统,所有Kubernetes资源对象的数据,都放置在 etcd 中,etcd 本身是一个高可用系统。
这里的工作负载就对应前面Kubernetes中工作负载 Workload的概念。工作负载通常有如下几种类型:
- 无状态(Deployment):表示对Kubernetes集群的一次更新操作,用于运行完全独立、功能相同应用的场景。
- 有状态(StatefulSet):支持应用部署、扩容、滚动升级时有序进行。如使用有状态来管理使用了持久存储的应用。
- 任务(Job):它创建出来的Pod只要完成任务就立即退出,用于执行一次性任务。可以使用Job以并行的方式运行多个 Pod。
- 定时任务(CronJob):它创建的Pod会周期性的执行,用于执行周期性任务。
- 自定义资源(Custom Resource Definitions,CRD):可以通过CRD添加第三方工作负载资源。
工作节点是Kubernetes的工作负载节点,主要包含三个组件:kubelet、kube-proxy、Container Runtime。
- kubelet:负责管理节点上容器的创建、删除、启停等任务,与管理节点通信。
- kube-proxy:负责Kubernetes服务的通信及负载均衡服务。
- Container Runtime:负责容器的基础管理服务,接收kubelet组件的指令。
实验过程
https://nasnext.console.aliyun.com/overview
NAS挂载点配置参数如下:
- 挂载点类型:专有网络
- VPC网络:clouder_attestation(10.0.0.0/8)
- 交换机:K8S-02(10.0.1.0/24)
- 权限组:VPC默认权限组(全部允许)
【操作注意】在文件系统列表页面如果看不到目标NAS资源,请注意页面左上方地域是否选择了华东1(杭州)。
创建ACK Serverless集群
https://cs.console.aliyun.com/
- (顶部页签)集群版本:ACK Serverless集群(请注意不要选错!)
- 集群名称:clouder-attestation
- 集群规格:基础版
- 地域:华东1(杭州)
- 版本:1.22.15-aliyun.1
- 专有网络:使用已有 - clouder_attestation
- 虚拟交换机:勾选 K8S-01,K8S-02
- 配置SNAT:勾选 为专有网络配置SNAT
- API Server访问:默认 标准型I(slb.s2.small),勾选 使用EIP暴露API Server
- 安全组:自动创建普通安全组
- 其余均使用默认参数
通过镜像在集群中快速部署容器应用
依次定义存储卷如下:
- 类型:NAS
- 名称:wordpress-pv
- 存储驱动:CSI
- 总量:20Gi
- 访问模式:ReadWriteMany
- 选择挂载点:下拉框选择Clouder_Nas即可(之前步骤中已经创建的NAS挂载点)
- 单击显示高级设置,在子目录后填入:/share/data
- 版本:3
【操作注意】创建PV时一定要选择NAS的子目录,wordpress镜像会chown修改目录权限、属主和属组,而NAS的根目录/不允许修改权限、属主和属组,不指定子目录的话Pod会启动报错。
依次定义存储声明如下:
- 类型:NAS
- 名称:wordpress-pvc
- 分配模式:已有存储卷;点击选择已有存储卷,选择 “wordpress-pv,20Gi”
- 总量:20Gi
二、控制台进入创建应用页面
三、配置应用基本信息
1、配置应用基本信息如下:
命名空间(页面顶部):default
应用名称:wordpress
- 副本数量:5
- 类型:无状态(Deployment)
容器配置
1、已经提前准备好了wordpress容器应用镜像,保存在ACR镜像仓库中。点击镜像名称后的填写框,填入镜像仓库地址:
registry.cn-hangzhou.aliyuncs.com/wordpress_clouder/clouder-attestation-wordpress
2、点击镜像Tag后的选择镜像Tag按钮,选择标签V1,点击确定按钮。
registry.cn-hangzhou.aliyuncs.com/wordpress_clouder/clouder-attestation-wordpress
3、点击镜像拉取策略下拉按钮,选择优先使用本地镜像(IfNotPresent),所需资源后下拉框选择 CPU:1Core,内存:2GB
4、在端口设置中指定容器端口如下:
- 名称:tcp-80
- 容器端口:80
- 协议:TCP
5、下拉页面到最下方数据卷部分,设置存储声明(PVC)。
注意:在选择镜像tag后,此处可能会自动增加一个临时目录类型的本地存储,因为我们需要持久化存储数据,所以此处将其删除。如果没有出现本地存储可以忽略,直接进行下一步。
设置存储声明(PVC),点击增加云存储声明,填写名称和容器路径。
填写信息如下:
- 存储卷类型:云存储
- 名称:wordpress-pvc
- 挂载源:wordpress-pvc
- 容器路径:/var/www/html
五、配置容器访问
【说明】要使应用被外界访问,我们可以创建服务(Service)为一组具有相同功能的容器应用提供一个统一的入口地址,并且可以将请求负载分发到后端的各个容器上。
1、在访问设置框里点击服务(Service)后的创建按钮,设置信息如下:
- 名称:wordpress-svc
- 类型:负载均衡,公网访问,新建SLB(简约型I slb.s1.small)
- 外部流量策略:Cluster
- 端口映射:
- 名称:tcp-80(注意tcp要用英文字母小写)
- 服务端口:80
- 容器端口:80
- 协议:TCP
点击创建,完成服务Service创建。
六、生成容器
1、点击右下角创建按钮部署应用,等待创建显示成功后点击查看应用详情。待容器组状态都为 Running 时创建成功。
获取RDS for Mysql相关信息
https://rdsnext.console.aliyun.com/
创建信息如下:
- 数据库账号:wpadmin
- 账号类型:普通账号
- 新密码:Admin@123
- 确认密码:Admin@123
点击确定,完成数据库账号创建。
点击 数据库管理,点击 创建数据库 按钮,在弹框页面依次填入名称和字符集UTF8,选择授权账号为上一步新建的账号,点击创建按钮进行创建。
创建信息如下:
- 数据库名称:wordpress
- 支持字符集:utf8
- 授权账号:下拉框选择wpadmin
点击创建。
rm-bp1w819qa4v6lh7bd.mysql.rds.aliyuncs.com
rm-bp1sd6q503e0yk8wm.mysql.rds.aliyuncs.com
三、配置初始化页面
1、回到wordpress配置页面,将上一步中创建的数据库名称、账号密码、连接地址一次填入wordpress初始化页面,点击提交等待初始化。
- Database Name:wordpress
- Username:wpadmin
- Password:Admin@123
- DatabaseHost:上一步中获取的数据库连接内网地址
2、在弹出欢迎页上配置相关信息,点击Install Wordpress。
相关信息配置如下:
- Site Title:clouder_attestation
- Username:wpadmin
- Password:Admin@123
- Confirm Password:勾选
- Your Email:123@123.com
3、配置完成后,点击Install Wordpress需等待片刻,回弹出Success页面,点击该页面Log In。
4、输入账号密码后进入如下控制台即部署成功
- 账号:wpadmin
- 密码:Admin@123
- 在集群中查看和管理应用
1、在远程桌面浏览器输入以下地址可以访问ACK Serverless集群的控制台。
https://cs.console.aliyun.com/
一、释放Prometheus监控大盘
在控制台最上方搜索框搜索 Prometheus,点击 可观测监控Prometheus版;或者在远程桌面浏览器中输入以下地址,进入Prometheus控制台。
https://prometheus.console.aliyun.com/
在左侧导航栏监控列表页面,找到对应实例名称后的卸载按钮进行卸载。
二、释放ACK Serverless集群
1、在实验远程桌面浏览器输入以下地址访问ACK Serverless集群的控制台。
https://cs.console.aliyun.com/
2、在左侧导航栏点击 集群,找到对应集群名称后的更多按钮,点击删除。
3、在弹出框勾选最下方三个选项,然后点击确定按钮。
ACK Serverless资源删除需要耗时 3~5 分钟,出现如下界面代表资源删除完成,请务必等资源删除完成后再结束实验。