更新时间:2022-04-08 GMT+08:00
分享

Kubernetes部署

部署原理

本部署步骤通过kubectl命令来控制用户的kubernetes集群,进行部署操作。

目前支持自定义集群部署、CCE集群部署两种部署方式。

自定义集群部署:通过服务扩展点,建立Kubernetes接入点,使用kubectl命令完成部署。

CCE集群部署:可以直接在页面上,选择使用华为云上的集群。

产品优势

  • 可支持标准的原生kubernetes集群部署,采用公网部署时不需绑定在特定云厂商。
  • kubectl中使用到的yaml文件可以直接从上游发布服务或者代码仓库获取,打通了CI/CD流水线。
  • yaml文件和kubectl命令参数都可以引用部署任务中参数设置,增加灵活性,减少或避免部署脚本的修改。

自定义集群部署

  1. 获取kubeconfig文件。

    • 以华为云CCE为例。
      1. 登录CCE控制台,选择资源管理 > 集群管理,单击待连接集群下的命令行工具> kubectl

      2. 在集群详情页面,绑定公网apiserver地址。

        由于部署服务执行机与用户K8S集群不在同一个VPC,所以只能通过弹性IP访问。

      3. 在集群详情页面,下载kubectl配置文件(kubeconfig)。

        下载完成后用户会得到一个kubeconfig.json文件。

  2. 创建Kubernetes接入点。

    1. 进入部署服务主页。(部署服务主页<北京4>
    2. 单击“新建任务”,打开“新建任务”页面。
    3. 单击“下一步”,进入“选择部署模板”页面。
    4. 选择“空白模板”,并单击“下一步”,进入“部署步骤”页签。
    5. 切换到“所有步骤”页签,搜索到“Kubernetes部署”,将其“添加”
    6. “集群类型”选择为“自定义集群”
    7. 创建Kubernetes部署接入点。

      表1 创建Kubernetes部署接入点—参数说明

      参数名称

      填写说明

      连接名称

      服务扩展点的名称。

      Kubernetes URL

      填写为,kubeconfig文件中,"name":"externalCluster"字段后server中的URL,如下例中的URL为https://121.36.**.**:5443

      {"name":"externalCluster","cluster":{"server":"https://121.36.**.**:5443","insecure-skip-tls-verify":true}}
      

      Kubeconfig

      直接复制Kubeconfig文件中的全部内容即可。

      填写信息后单击“验证并确定”按钮,可以验证接入点是否配置成功。

  3. 页面提示,补全所需参数,即可完成Kubernetes公网部署

    • yaml文件中可以使用{{}}引用部署任务“参数设置”中的参数。
    • 命令参数中可以使用 ${} 引用部署任务“参数设置”中的参数。
    • 当yaml来源选择代码仓库时,需要填写yaml文件的相对路径,当前目录为代码分支的根目录。
    • 当部署方式为公网部署时,可选择单个yaml文件或者文件夹,在内网部署模式下,仅支持选择单个yaml文件。
    • kubectl命令使用指南请参考:kubectl命令

CCE集群部署

  1. 进入部署服务主页。(例如:部署服务主页<北京4>
  2. 单击“新建任务”,打开“新建任务-基本信息”页面。
  3. 单击“下一步”,进入“新建任务-选择部署模板”页面。
  4. 选择“空白模板”,并单击“下一步”,进入“部署步骤”页面。
  5. 切换到“所有步骤”页签,搜索到“Kubernetes部署”,将其“添加”
  6. “部署方式”选择为“CCE集群”
  7. 这时可直接选择华为云同区域下的“集群名称”“命名空间名称”。(什么是集群?

  8. 按页面提示,补全所需参数,即可完成Kubernetes内网部署。

    • yaml文件中可以使用{{}}引用部署任务“参数设置”中的参数。
    • 命令参数中可以使用 ${} 引用部署任务“参数设置”中的参数。
    • 当yaml来源选择代码仓库时,需要填写yaml文件的相对路径,当前目录为代码分支的根目录。
    • 部署方式为内网部署时,yaml文件请遵循以下几条规则
      • 仅支持yaml格式的文件输入,不支持文件夹路径。
      • 只支持deployment、service、ingress三种类型的kubernetes对象的创建和升级,且deployment对象个数不大于1。
      • 同一个部署步骤中,不同的kubernetes对象在同一个yaml文件中定义。
      • yaml文件中,不同对象之间用”---”开头的字符分割。
    • kubectl命令使用指南请参考:kubectl命令

CCE集群—deployment快速部署

  1. 创建CCE集群,可参考快速创建CCE集群
  2. 创建命名空间,可参考创建命名空间
  3. 创建负载均衡、容器配置,可参考创建无状态负载
  4. 推送镜像到镜像仓库,可参考制作Docker镜像并推送到SWR镜像仓。(可选,若部署非私有镜像,请跳过)
  5. 进入部署服务主页(例如:部署服务主页<北京4>)。
  6. 单击“新建任务”,打开“新建任务”页面。
  7. 单击“下一步”,进入“选择部署模板”页面。
  8. 选择“空白模板”,并单击“下一步”,进入“部署步骤”页面。
  9. 切换到“所有步骤”页签,搜索到“Kubernetes部署”,将其“添加”
  10. 进入步骤编辑页面,参考表2进行如下配置:

    1. “集群类型”选择为“CCE集群”
    2. “部署方式”切换至“快速部署”
    3. 选择好需要部署的集群、命名空间、工作负载(deployment)、容器、镜像和镜像版本(镜像版本不要选择当前版本,会导致部署不生效)。

    容器、镜像和镜像版本中可以使用 ${XXX} 引用部署任务“参数设置”中的参数,样例可参考表3

  11. 单击“保存并执行”,即可启动部署。
表2 参数说明

步骤显示名称

步骤显示名称

集群类型

支持自定义集群/CCE集群。

选择区域

选择要部署的区域。

集群名称

选择CCE云容器引擎中购买的K8S集群。

命名空间名称

选择CCE云容器引擎中K8S集群的命名空间。

部署方式

支持快速部署/Yml部署,默认快速部署。

工作负载(deployment)

选择需要部署的无状态工作负载。

容器名称

选择需要部署的容器实例名。

镜像名称

选择需要部署的镜像。

镜像版本

选择需要部署的镜像版本。

控制选项

是否失败后继续运行。

表3 参数引用示例

参数设置样例

参数引用样例

部署过程遇到问题可参考Kubernetes部署步骤操作相关问题

yaml文件编写

  • 使用kubectl通过yaml文件部署门槛相对较高,用户可以参考以下两种方法编写yaml文件。
  • 使用yaml文件部署成功后,再使用{{}}引用部署任务参数,挂接流水线打通整个CI/CD流程。

方法1:

可参考CCE相关文档:如何使用kubectl命令?

方法2:

  1. 在CCE服务中创建好工作负载。
  2. 选择工作负载相关的对象,单击编辑yaml文件,下载得到yaml文件。
  3. 删除掉上述yaml中和版本、时间戳、状态等相关的字段(不删除可能会报错)。

  1. 常见的对象以及yaml在CCE界面上的获取位置:
    • deployment:

      单击工作负载>无状态>更多>编辑YAML

    • service:

      单击资源管理>网络管理>Service>编辑YAML

    • ingress:

      单击资源管理>网络管理>Ingress>查看YAML

    • configmap:

      单击配置中心>配置项(ConfigMap)>查看YAML

    • secret:

      单击配置中心>配置项(Secret)>查看YAML

  2. yaml文件中需要删除的字段:(yaml中以下字段都是K8S集群自动生成的,因此在部署使用的yaml无需填写。)
    • metadata.selfLink //访问资源自身的URL
    • metadata.uid //系统为每个对象生成的唯一ID
    • metadata.resourceVersion //用于识别改资源内部版本号
    • metadata.generation //对象修改序号
    • metadata.creationTimestamp //创建对象的时间戳
    • metadata.annotations //对象的注解
    • status //对象在系统中当前的状态
分享:

    相关文档

    相关产品

close