云容器引擎

常见问题

2022-04-19 13:59:38

Q:云容器引擎常见的使用场景如下?

A:1)适用于传统IT架构渐进式转型的场景,实现单一架构解耦拆分为多个容器,系统更灵活,轻松应对市场变化。

2)适用于业务上线效率低下的场景,实现容器镜像贯穿从开发到运维各环节,统一环境配置,业务快速上线。

3)适用于访问量有明显波峰、波谷的应用,实现自动弹性伸缩,系统秒级自动弹性扩容,快速响应并发高峰

4)适用于系统IT资源浪费严重的场景,使平均负载维持较高水平,每分钱都真正支持业务。

5)适用于复杂系统运维压力大的场景,基于容器服务实现自动化运维,基于实时日志快速问题定位,界面化操作和短信通知实现24小时自动监控。


Q:什么是环境变量?

A:环境变量是指容器运行环境中设定的一个变量,您可以在创建容器模板时设定不超过30个的环境变量;环境变量可以在应用部署后修改,为应用提供极大的灵活性。在CCE中设置环境变量与Dockerfile中的“ENV”效果相同。


Q:集群删除之后相关数据能否再次找回?

A:集群删除之后,部署在集群上的应用也会同步删除,无法恢复,请慎重删除集群。


Q:节点状态与应用状态不一致?

A:当节点的实际状态发生变化时,CCE界面上的节点状态可能不会立即更新(延迟大概2分钟),而该节点上的应用状态能够实时更新,所以会出现节点状态与应用状态不一致的现象。


Q:在已有的节点创建应用时未重新拉取镜像?

A:当容器镜像的tag不是latest时,用户更新该容器镜像但没有更改镜像的tag,则使用该镜像创建应用时,就不会重新拉取更新后的镜像,需要您在更新镜像的同时更改镜像的版本tag。


Q:如何绑定弹性IP?

A:可以通过申请弹性IP并将弹性IP绑定到弹性云主机上,实现节点(云主机)访公网的目的。

1) 登录天翼云控制中心,点击产品列表中的【网络】【虚拟私有云】;

2) 在左侧导航树,单击【弹性IP】;

3) 单击【申请弹性IP】;

4) 在申请弹性IP页面,选择计费方式、带宽值,点击【立即创建】;

5) 在成功申请的弹性IP申请后,点击【绑定】链接,选择创建的云主机(容器节点),点击【确定】;

6) 绑定成功即可实现应用的外网访问。

Q:如何解决新增节点时提示弹性IP不足的问题?

A:问题描述:新增节点时,弹性IP选择“现在使用”,创建节点失败,提示弹性IP不足。

解决方法:您可以有两种方法解决弹性IP不足的问题。

方法一:解绑已绑定弹性IP的云主机,再重新添加节点;

方法二:提高弹性IP的配额,您需要通过工单系统来提交申请。


Q:创建容器应用有哪几种方式?有什么区别?

A:目前支持两种部署方式,用户可基于自身需求选择:

选择Dockerhub官方镜像:基于开源docker镜像创建容器应用,无需上传私有镜像。

上传并选择私有镜像:您可基于业务需求制作私有docker镜像,上传到容器镜像服务。基于该私有镜像创建容器应用。


Q:镜像、容器、应用的关系是什么?

A:镜像:Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器:镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

镜像、容器、以及应用之间的关系请参见下图:

Q:如何获取长期有效的docker login指令?

A:操作步骤
1、获取镜像仓库访问地址、区域项目名称。
访问我的凭证:登录控制台,鼠标移动到右上角您的用户名处,单击“我的凭证”。
访问我的凭证

2、在“项目列表”页签中查找当前区域对应的项目。
在容器镜像服务控制台中获取镜像仓库地址。
获取该地址的方式:单击“我的镜像”,单击镜像列表中的镜像名称,在“Pull/Push指南”页签中的“1. 本地镜像地址”下可以看到镜像仓库地址。

获取镜像仓库地址

获取AK/SK访问密钥。
说明:如果已有AK/SK,可以直接使用,无需再次获取。

1.访问我的凭证
步骤:登录控制台,鼠标移动到右上角您的用户名处,单击“我的凭证”。
2.在“管理访问密钥”页签,单击列表下侧的“新增访问密钥”,创建新的访问密钥。
新增访问密钥

3.输入当前用户的登录密码,并通过邮箱或者手机进行验证。
 说明:在统一身份认证服务中创建的用户,如果创建时未填写邮箱或者手机号,则只需校验登录密码。
4.单击“确定”,下载访问密钥。
请妥善保存已下载的密钥,后续创建集群时需要上传该密钥,否则会无法创建集群。
 说明:为防止访问密钥泄露,建议您将其保存到安全的位置。

登录一台linux系统的计算机,执行如下命令获取登录密钥。
printf "$AK" | openssl dgst -binary -sha256 -hmac "$SK" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'
其中$AK和$SK为步骤2获取的AK/SK。
示例
 

使用如下的格式拼接docker login指令。
docker login -u  [区域项目名]@[AK]  -p  [登录密钥]  [镜像仓库地址]
其中,区域项目名和镜像仓库地址在步骤1中获取,AK在步骤2中获取,登录密钥为步骤3的执行结果。


Q:如何通过kubectl命令行创建负载均衡?
A:本节以nginx为例,说明kubectl命令实现负载均衡 ( LoadBalancer )访问的方法。
前提条件
请参见3.17 通过Kubectl连接集群配置kubectl命令,使弹性云服务器连接集群。
步骤1:登录已配置好kubectl命令的弹性云服务器。登录方法请参见登录Linux弹性云服务器。
步骤2:创建并编辑nginx-deployment.yaml以及nginx-elb-svc.yaml文件。
其中,nginx-deployment.yaml和nginx-elb-svc.yaml为自定义名称,您可以随意命名。
vi nginx-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx 
        imagePullPolicy: Always
        name: nginx
      imagePullSecrets:
      - name: default-secret
vi nginx-elb-svc.yaml
 
若需要开启会话保持,需要满足如下条件:
 应用管理协议为TCP。
 应用管理的各实例已设置反亲和部署,即所有的实例都部署在不同节点上。详细请参见指定应用管理部署在不同节点。
apiVersion: v1 
kind: Service 
metadata: 
  annotations:   
    kubernetes.io/elb.class: union                 #对接增强型负载均衡需要加此参数,若对接经典型负载均衡(已停售),值为elasticity
    kubernetes.io/elb.id: 3c7caa5a-a641-4bff-801a-feace27424b6        #可选,为负载均衡增强型实例的ID
    kubernetes.io/elb.subnet-id: 5083f225-9bf8-48fa-9c8b-67bd9693c4c0   #可选,当自动创建时必填,1.11.7-r0以上的版本可不填
    kubernetes.io/elb.autocreate: >-      
     {"type":"public","bandwidth_name":"cce-bandwidth-1558492655112","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_sbgp"}                                                                #必填
  labels: 
    app: nginx 
  name: nginx 
spec: 
  loadBalancerIP: 10.78.42.242                          #配置为ELB的IP地址 
  ports: 
  - name: service0 
    port: 80             #集群虚拟IP的访问端口,也是注册到负载均衡上的端口 
    protocol: TCP 
    targetPort: 80       #对应界面上的容器端口 
  selector: 
    app: nginx 
  type: LoadBalancer
步骤3:创建应用管理。
kubectl create -f nginx-deployment.yaml
回显如下,表示应用管理已开始创建。
deployment "nginx" created
kubectl get po
回显如下,应用管理状态为Running状态,表示应用管理已运行中。
NAME                     READY     STATUS             RESTARTS   AGE
etcd-0                   0/1       ImagePullBackOff   0          1h
icagent-m9dkt            0/0       Running            0          3d
nginx-2601814895-c1xhw   1/1       Running            0          6s
步骤4:创建服务。
kubectl create -f nginx-elb-svc.yaml
回显如下,表示服务已创建。
service "nginx" created
kubectl get svc
回显如下,表示应用管理访问方式已设置成功,应用管理可访问。
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
etcd-svc     ClusterIP      None             <none>        3120/TCP       1h
kubernetes   ClusterIP      10.247.0.1       <none>        443/TCP        3d
nginx        LoadBalancer   10.247.130.196   10.78.42.242   80:31540/TCP   51s
步骤5:在浏览器中输入访问地址,例如输入10.78.42.242:31540。10.78.42.242为负载均衡实例IP地址,31540为对应界面上的访问端口。