您可以使用镜像创建一个可公网访问的nginx应用。

前提条件

创建一个 Kubernetes 集群。详情请参见创建Kubernetes集群

操作步骤

  1. 登录容器服务管理控制台
  2. 在Kubernetes菜单下,单击左侧导航栏中的应用 > 部署,然后单击页面右上角的使用镜像创建
  3. 设置应用名称部署集群命名空间,并单击下一步 进入应用配置页面。
    如果您不设置命名空间,系统会默认使用 default 命名空间。


  4. 设置应用的基本配置。
    • 镜像名称:您可以单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定,本例中为 nginx。

      您还可以填写私有 registry。填写的格式为domainname/namespace/imagename:tag

    • 镜像版本:您可以单击选择镜像版本 选择镜像的版本。若不指定,默认为 latest。
    • 容器数量:可指定容器的数量,本示例是单容器 Pod,若指定多个容器,会启动相同数量的 Pod。


  5. 可选: 设置容器的资源限制和资源预留。
    • 资源限制:可指定该应用所能使用的资源上限,包括 CPU 和 内存两种资源,防止占用过多资源。
    • 所需资源:即为该应用预留资源额度,包括 CPU 和 内存两种资源,即容器独占该资源,防止因资源不足而被其他服务或进程争抢资源,导致应用不可用。
    其中,CPU 资源的单位为 millicores,即一个核的千分之一;内存的单位为 Bytes,可以为 Gi、Mi 或 Ki。


  6. 可选: 配置数据卷信息。

    支持配置本地存储和云存储。

    • 本地存储:支持主机目录(hostpath)、配置项(configmap)、保密字典(secret)和临时目录,将对应的挂载源挂载到容器路径中。更多信息参见 volumes
    • 云存储:支持云盘/NAS/OSS三种云存储类型。
    本例中配置了一个云盘类型的数据卷,将该云盘挂载到容器中/tmp 路径下,在该路径下生成的容器数据会存储到云盘中。


  7. 可选: 配置环境变量。

    支持通过键值对的形式为 Pod 配置环境变量。用于给 Pod 添加环境标志或传递配置等,具体请参见 Pod variable

  8. 可选: 配置容器信息。

    您可以为运行在 Pod 中的容器配置 Command、Arguments 和容器启动项。

    • CommandArgs:若不配置,会使用镜像默认的设置;若配置,则会覆盖镜像里的默认设置,并且如果只配置 Arguments,容器启动时,默认的 Command 会执行新的 Arguments。Command 和 Arguments 在 Pod 创建之后不可更改。
    • 容器启动项:勾选 stdin 表示为该容器开启标准输入;勾选 tty 表示为该容器分配一个虚拟终端,以便于向容器发送信号。通常这两个选项是一起使用的,表示将终端 (tty) 绑定到容器的标准输入(stdin)上,比如一个交互式的程序从用户获取标准输入,并显示到终端中。
  9. 可选: 设置健康检查

    支持存活检查(liveness)和就绪检查(Readiness)。存活检查用于检测何时重启容器;就绪检查确定容器是否已经就绪,且可以接受流量。关于健康检查的更多信息,请参见https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes



    请求类型 配置说明
    HTTP请求 即向容器发送一个HTTPget 请求,支持的参数包括:
    • 协议:HTTP/HTTPS
    • 路径:访问HTTP server 的路径
    • 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。
    • HTTP头:即HTTPHeaders,HTTP请求中自定义的请求头,HTTP允许重复的header。支持键值对的配置方式。
    • 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒。
    • 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10s,最低为1s。
    • 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。
    • 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。对于liveness必须是1。最小值是1
    • 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。
    TCP连接 即向容器发送一个TCP Socket,kubelet将尝试在指定端口上打开容器的套接字。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。支持的参数包括:
    • 端口:容器暴露的访问端口或端口名,端口号必须介于1~65535。
    • 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒。
    • 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10s,最低为1s。
    • 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。
    • 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。对于liveness必须是1。最小值是1
    • 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。
    命令行 通过在容器中执行探针检测命令,来检测容器的健康情况。支持的参数包括:
    • 命令行:用于检测容器健康情况的探测命令。
    • 延迟探测时间(秒):即initialDelaySeconds,容器启动后第一次执行探测时需要等待多少秒。
    • 执行探测频率(秒):即periodSeconds,指执行探测的时间间隔,默认为10s,最低为1s。
    • 超时时间(秒):即timeoutSeconds,探测超时时间。默认1秒,最小1秒。
    • 健康阈值:探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。对于liveness必须是1。最小值是1
    • 不健康阈值:探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。
  10. 可选: 设置自动伸缩
    您可勾选是否开启自动伸缩,为了满足应用在不同负载下的需求,容器服务支持服容器的弹性伸缩,即根据容器 CPU 和内存资源占用情况自动调整容器数量。


    说明 若要启用自动伸缩,您必须为Deployment设置所需资源,否则容器自动伸缩无法生效。
    • 指标:支持CPU和内存,需要和设置的所需资源类型相同。
    • 触发条件:资源使用率的百分比,超过该使用量,容器开始扩容。
    • 最大容器数量:该Deployment可扩容的容器数量上限。
    • 最小容器数量:该Deployment可缩容的容器数量下限。
  11. 完成应用配置后,单击 下一步
  12. 进入访问设置页面,您可以设置暴露后端Pod的方式,最后单击创建。本例中选择ClusterIP服务和路由(Ingress),构建一个可公网访问的nginx应用。
    说明

    针对应用的通信需求,您可灵活进行访问设置:

    • 内部应用:对于只在集群内部工作的应用,您可根据需要创建ClusterIP或NodePort类型的服务,来进行内部通信。
    • 外部应用:对于需要暴露到公网的应用,您可以采用两种方式进行访问设置:
      • 创建LoadBalancer类型的服务:使用阿里云提供的负载均衡服务(Server Load Balancer,SLB),该服务提供公网访问能力。
      • 创建ClusterIP、NodePort类型的服务,以及路由(Ingress):通过路由提供公网访问能力,详情参见https://kubernetes.io/docs/concepts/services-networking/ingress/


    1. 在服务栏单击创建,在弹出的对话框中进行配置,最后单击创建


      • 名称:您可自主设置,默认为applicationname-svc
      • 类型:您可以从下面 3 种服务类型中进行选择。
        • 虚拟集群 IP:即 ClusterIP,指通过集群的内部 IP 暴露服务,选择该项,服务只能够在集群内部可以访问。
        • 节点端口:即 NodePort,通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。
        • 负载均衡:即 LoadBalancer,是阿里云提供的负载均衡服务,可选择公网访问或内网访问。负载均衡可以路由到 NodePort 服务和 ClusterIP 服务。
      • 名称:默认会生成一个应用名后缀 svc 的服务名称,本例中为 nginx-default-svc,您也可更改服务的名称。
      • 端口映射:您需要添加服务端口和容器端口,若您选择节点端口的服务类型,还需要自己设置节点端口,防止端口出现冲突。支持 TCP/UDP 协议。
      • 注解:为该服务添加一个注解(annotation),支持负载均衡配置参数。
      • 标签:您可为该服务添加一个标签,标识该服务。
    2. 在路由栏单击创建,在弹出的对话框中,为后端Pod配置路由规则,最后单击创建。更多详细的路由配置信息,请参见路由配置说明
      说明 通过镜像创建应用时,您仅能为一个服务创建路由(Ingress)。本例中使用一个虚拟主机名称作为测试域名,您需要在hosts中添加一条记录。在实际工作场景中,请使用备案域名。
      101.37.224.146   foo.bar.com    #即ingress的IP


    3. 在访问设置页面,您可看到创建完毕的服务和路由,您可单击变更删除进行二次配置,最后单击创建


  13. 创建成功后,默认进入创建完成页面,会列出应用包含的对象,您可以单击查看应用详情进行查看。


    默认进入新建的nginx-deployment的详情页面。



  14. 单击左侧导航栏的应用 > 路由,可以看到路由列表下出现一条规则。


  15. 在浏览器中访问路由测试域名,您可访问 nginx 欢迎页。