创建无状态工作负载(nginx)-凯发k8国际娱乐官网入口
您可以使用镜像快速创建一个可公网访问的单实例工作负载。本章节将指导您基于云容器引擎cce快速部署nginx容器应用,并管理该容器应用的全生命周期,以期让您具备将云容器引擎应用到实际项目中的能力。
前提条件
您需要创建一个至少包含一个4核8g节点的集群,且该节点已绑定弹性ip。
集群是运行工作负载的逻辑分组,包含一组云服务器资源,每台云服务器即集群中的一个节点。
创建集群的方法,请参见快速创建kubernetes集群。
nginx应用概述
nginx是一款轻量级的web服务器,您可通过cce快速搭建nginx web服务器。
本章节将以创建nginx应用为例,来创建一个工作负载,预计需要5分钟。
本章节执行完成后,可成功访问nginx的网页,如下图。
通过控制台创建nginx
本章节将指导您通过容器镜像创建您的第一个容器工作负载。
- 登录。
- 单击集群进入集群控制台。
- 在左侧菜单栏选择“工作负载”,单击右上角“创建负载”。
- 填写以下参数,其它保持默认。
基本信息
- 负载类型:选择无状态负载。
- 负载名称:nginx。
- 命名空间:default。
- 实例数量:请设置为1。
容器配置
在“容器信息 > 基本信息”中单击“选择镜像”,在弹出的窗口中选择“镜像中心”,并搜索“nginx”,选择nginx镜像。
图2 选择nginx镜像
服务配置
单击服务配置下的加号,创建服务(service),用于从外部访问负载。本例将创建一个负载均衡类型的service,请在右侧弹窗中配置如下参数。
- service名称:输入应用发布的可被外部访问的名称,设置为:nginx。
- 访问类型:选择“负载均衡 ( loadbalancer )”。
- 服务亲和:保持默认。
- 负载均衡器:如果已有负载均衡(elb)实例,可以选择已有elb,如果没有可选择“自动创建”,创建一个公网类型负载均衡器。
- 端口配置:
- 对外协议:tcp。
- 服务端口:设置为8080,该端口号将映射到容器端口。
- 容器端口:容器中应用启动监听的端口,nginx镜像请设置为80,其他应用容器端口和应用本身的端口一致。
图3 创建服务
- 单击右下角“创建工作负载”。
等待工作负载创建成功。
创建成功后在无状态负载下会显示一个运行中的工作负载。
图4 创建工作负载成功
访问nginx
- 获取nginx的外部访问地址。
单击nginx工作负载名称,进入工作负载详情页。在“访问方式”页签下可以看到nginx的ip地址,其中公网地址就是外部访问地址。图5 获取外部访问地址
- 在浏览器中输入“外部访问地址”,即可成功访问应用,如下图所示。
图6 访问nginx应用
通过kubectl创建nginx
本步骤指导您通过kubectl创建一个无状态工作负载(deployment),并通过负载均衡类型service将负载公开,使得其能从外网访问。
- 请参见,使用kubectl连接集群。
- 创建一个名为nginx-deployment.yaml的描述文件。其中,nginx-deployment.yaml为自定义名称,您可以随意命名。
vi nginx-deployment.yaml
apiversion: apps/v1 kind: deployment metadata: name: nginx spec: replicas: 1 selector: matchlabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:alpine name: nginx imagepullsecrets: - name: default-secret
- 创建deployment。
kubectl create -f nginx-deployment.yaml
回显如下表示已开始创建deployment。
deployment "nginx" created
查看deployment状态。
kubectl get deployment
deployment状态显示为running,表示deployment已创建成功。
name ready up-to-date available age nginx 1/1 1 1 4m5s
参数解析:
- name:工作负载名称。
- ready:表示工作负载的可用状态,显示为“可用pod个数/期望pod个数”。
- up-to-date:指当前已经完成更新的副本数。
- available:可用的pod个数。
- age:已经运行的时间。
- 创建一个名为nginx-elb-svc.yaml的描述文件。将selector修改为nginx-deployment.yaml示例应用文件中matchlabels的值(本示例为app: nginx),从而将该服务关联至后端应用。
下面示例中参数详细描述清参见。
apiversion: v1 kind: service metadata: annotations: kubernetes.io/elb.class: union kubernetes.io/elb.autocreate: '{ "type": "public", "bandwidth_name": "cce-bandwidth", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "per", "eip_type": "5_bgp" }' labels: app: nginx name: nginx spec: ports: - name: service0 port: 80 protocol: tcp targetport: 80 selector: app: nginx type: loadbalancer
- 创建服务。
kubectl create -f nginx-elb-svc.yaml
回显如下,表示服务已创建。
service/nginx created
kubectl get svc
回显如下,表示工作负载访问方式已设置成功,工作负载可访问。
name type cluster-ip external-ip port(s) age kubernetes clusterip 10.247.0.1
443/tcp 3d nginx loadbalancer 10.247.130.196 **.**.**.** 80:31540/tcp 51s - 在浏览器中输入访问地址,例如输入**.**.**.**:80。**.**.**.**为负载均衡实例ip地址,80为对应界面上的访问端口。
可成功访问nginx。
图7 通过负载均衡访问nginx
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨