开发者中心 > 专栏 > 内容详情
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

实操干货 | 使用云监控管理Kubernetes

  • 京东科技开发者
  • 2020-04-13
  • 31784浏览

一、  概述

京东智联云云监控支持监控Kubernetes集群的业务监控数据,本教程提供了示例代码的git地址,方便您学习如何将代码编译为镜像,并通过kubernetes集群进行部署和访问,同时通过自定义监控查看业务监控数据和配置告警规则。


操作流程

本指南的操作流程分为如下三个步骤:


1.png

使用的云服务

本指南涉及到的云产品服务及用途如下:


序号

云产品

功能及用途

备注

1

容器镜像仓库

用于存放示例demo镜像


2

云编译

编译和打包实例demo代码,同时将镜像推送至容器镜像仓库


3

私有网络

创建用于Kubernetes集群,工作节点所需的VPC


4

Access Key

授权K8S集群访问京东智联云各个服务API的授权凭证。

例如:集群向京东智联云监控中心,推送业务监控数据就需要用到AK/SK。

5

Kubernetes集群

创建K8S集群,部署应用服务

规格:通用型1核4GB,公网IP 5Mpbs

6

云监控

查询业务监控数据,配置告警服务。


 

二、  操作指南

第一步:准备Docker镜像

创建容器镜像仓库

新建注册表

1.     登录京东智联云控制台,选择云服务->弹性计算->容器镜像仓库


1.png


2.     进入注册表页面,选择“华北-北京”地域,点击“新建”按钮,进入新建注册表页面。


1.png


3.     在新建注册表页面,设置名称,勾选同意服务条款。点击“保存”按钮即可。

注: 名称可以自定义,但请保证京东智联云全局唯一


1.png

新建镜像仓库

1.     切换至“镜像仓库”列表页面,选择地域“华北-北京”,点击“创建”按钮。


1.png


2.     在新建镜像仓库页面, 选择刚新建的注册表,配置注册表名称信息


1.png


3.     创建成功后,在镜像仓库里列表可以看到到仓库名称。以及镜像仓库的URI


1.png

编译构建Docker镜像

新建编译任务

1.     选择云服务->开发者工具->云编译,进入云编译服务页面。


1.png


2.      在任务列表页面,选择华北-北京地域, 点击“创建”按钮,选择中“创建任务”。


1.png


3.     在创建任务页面做如下配置:

【任务配置】

a.     任务名称,可以自定义,例如:k8s-monitor-ci

b.    镜像来源,选中官方。

c.     编译镜像选择 pyinstaller/v3.4-python3.7

【源码配置】

a.     代码源:请选择其他Git仓库

b.    代码库,请将https://code.jdcloud.com/jdcloud-monitor/prometheus-demo.git 粘贴进去

1.png

【构建存放】

a.     是否归档,选中“是”

b.    构建类型,请选择“镜像”

c.     镜像仓库,请选择第一步创建的镜像仓库URI。

1.png

4.     点击“保存”按钮,完成任务的创建。

构建任务

1.     选中刚创建的任务,点击操作了下的执行构建按钮。


1.png


2.     在弹出的构建页面,配置如下信息

a.     构建方式,选择“CommitID”

b.    CommitIDece523fc68cce1cd3d48b38fc07252f81ba2c44c 粘贴填入

1.png


3.     点击“确定”按钮,执行编译构建操作。当产物归档状态变为完成状态时,完成构建。


1.png

第二步:用K8S部署应用服务

前提准备

创建kubernetes进群时,需要用到VPC密钥信息, 只需创建VPC即可,无需创建子网,工作节点组用到的子网会自己创建。

创建VPC

1.     选择云服务->网络->私有网络,进入私有网络VPC列表页面。


1.png


2.     在私有网络页面,选中华北-北京地域,点击“创建”按钮。


1.png


3.     配置网络名称,IPv4CIRD选择 192.168.0.0/16


1.png


4.     点击“确定”按钮,完成私有网络创建。

创建AK/SK密钥(已有密钥,则可跳过该步骤)

1.     点击顶部导航的账户名称,在弹出的下拉框中点击“Access Key管理”


1.png


2.     在进入的Access Key管理页面中,点击“创建Access Key”


1.png


3.     再弹出的页面,点击“获取验证码”


1.png

4.     将你手机短信获取到的验证码信息,填入后点击“确定”按钮后,完成创建。

创建Kubernetes集群

1.     选择云服务->弹性计算-> Kubernetes集群,进入集群列表页面。


1.png


2.     选择“华北-北京”地域,点击“创建”按钮


1.png

3.     在新建Kubernetes集群,进行如下配置:


【集群信息】

a.     地域:请确认选中“华北-北京”

b.    可用区:使用默认选中的可用区。

c.     名称,设置集群的名称,例如:monitor-demo

d.    集群版本,默认值即可。

e.     管理的CIRD,使用默认设置。

f.      Access Key,选择已创建的Access Key。

g.    集群监控,请确保已打开。 开启此选项后,K8S将采集业务监控数据。

1.png

【新建工作节点信息】

a.     私有网络:请选择刚新建的私有网络,例如:K8S-Monitor-vpc-01。

b.    工作节点CIDR,使用默认值。

:1)该选项会新建一个子网段,若选择非刚新建的空VPC,请确保所配置CIDR与已创建的子网地址无重复和重叠情况

2工作节点的CIDR与集群管理的CIDR 也不允许重复和重叠,若您进行了更改,则需要规避以上情况

c.     操作系统,使用默认值centos

d.    工作组可用区,使用默认值。

注:若保存时提示可用区资源售罄sold out 信息,可去掉某些可用区进行尝试。

e.     规格:选择“通用型”、g.n2.medium(1核4GB,通用 标准型)

f.      系统盘:选择“容量型HDD云盘”、大小设置为40GB

g.    工作节点数量:选择默认值,1个

h.    名称:配置节点组的名称,例如:monitor-nodegroup1

i.      点击“展开高级配置”,高级配置中设置登录密码信息。此处登录密码为K8S创建的云主机,其对应的密码。

1.png

4.     选中kubernetes集群服务条款,点击“确定”按钮,完成集群创建。注:若提示规格或者系统盘售罄时,可更改可用区,进行尝试。)

1.png

部署服务

注册镜像仓库

注:本操作是将容器镜像仓库的注册表在K8S服务中进行注册,便于后续pod上部署应用服务。

1.     选择云服务->弹性计算-> 云主机,进入云主机列表页面。在云主机列表可以看到新创建了2台云主机实例。


1.png


2.     找到k8s-***-nat-vm-***命名的云主机,其为K8S集群的管理节点云主机, 可以公网SSH远程登录进去。(建议使用SSH远程登录工具xshell)

注: 若忘记了密码,可通过更多操作下的“重置密码”操作重新设置密码。

3.     管理节点登录成功后,ssh 登录至 k8s-node-*** 节点的云主机(命令: ssh root@your_node_ip,  需要将 your_node_ip 替换为你的node云主机的内网ip。点击回车后输入密码即可 )。

4.     获取集群凭据, 选择云服务->弹性计算-> Kubernetes集群, 进入集群列表页面。选中刚创建的集群信息,点击名称,进入详情页面。切换至kubectl客户端配置页。


1.png

1.png

5.     配置kubectl客户端

执行如下命令

mkdir -p $HOME/.kube  

cd $HOME/.kube        

vi config              

将kubectl客户端配置的凭据,拷贝至config中,保存后退出。

1.png

保存后,退出。:wq

执行 sudo chown $(id -u):$(id -g) $HOME/.kube/config 命令。

6.     执行以下操作命名,注册镜像仓库。

注意:将以下黑色加粗信息替换为自己镜像仓库中注册表的相关信息(kubectl 在node节点云主机上已默认安装)。

kubectl create secret -n default docker-registry my-secret --docker-server=k8s-monitor-demo-cn-north-1.jcr.service.jdcloud.com --docker-username=jdcloud --docker-password=byfOdCDEcpoS4lph --docker-email=XXX@jd.com

a.     docker-registry:为您定义的secret名称,示例使用my-secret。记住次名称,后续部署拉取镜像时需要指定该名称

b.    Docker-server:请填写你镜像仓库的注册表URI

c.     docker-password:使用docker客户端登录命令中 –p 后的内容(通过获取临时令牌进行获取。)

d.    docker-email:输入你自己的邮箱信息即可

1.png

1.png

创建Pod

1.     在kubernetes集群页面,菜单切换至Workloads->Pod,进入Pod列表页面。


1.png


2.     选中“华北-北京地域”,点击“创建”按钮。进入创建Pod页面。配置如下信息

a.     集群:请确认刚创建的集群,例如:monitor-demo

b.    Yaml 文件:将如下内容拷贝至黑色输入框,注意黄色标注内容。

apiVersion: v1

kind: Pod

metadata:

  name: prometheus-demo

  labels:

    app: prometheus-demo

spec:

  imagePullSecrets:

    - name: my-secret

  containers:

    - name: flaskapp-demo

      image: jcloud-monitor-cn-north-1.jcr.service.jdcloud.com/prometheus-demo:job-78a6Lnbp2nL35xw-1584449329

      ports:

        - containerPort: 5000

        - containerPort: 7777

 

注:

1name:为您注册镜像仓库创建的secret名称,示例用的my-secret。(可查看上一步骤

2image 标注为黄色的内容包含2个部分,URI:镜像版本请一定要替换为自己镜像仓库的内容。可通过如下截图位置获取。


1.png

1.png

1.png

3.     点击“确定”按钮,完成创建。可以看到创建的pod,进入pod详情,切换至Container可以查看其运行状态,等待3分钟左右,其状态变为运行,服务部署成功。


1.png

1.png

注:若为其他状态,请检查以上步骤,相关配置是否有问题。

配置访问策略

创建Service

注:基于K8S部署的应用服务,若需要外网访问,则需要创建一个负载均衡,同时绑定公网IP,以下步骤就是通过创建Service为服务配置一个负载均衡。

1.     切换至service列表页面,选择“华北-北京”,点击“创建”按钮。


1.png


2.     进入创建Service页面

a.     集群:确认选中的集群。

b.    Yaml:将如下信息拷贝至输入框中。

kind: Service

apiVersion: v1

metadata:

  name: prometheus-demo

  annotations:

    prometheus.io/path: /metrics

    prometheus.io/port: '7777'

    prometheus.io/scrape: 'true'

spec:

  ports:

    - protocol: TCP

      port: 5000

      targetPort: 5000

  selector:

    app: prometheus-demo

  type: LoadBalancer

 

1.png

3.     点击“确定”按钮,完成service创建。点击名称,进入详情页面,可查看到pod状态为running


1.png

1.png

4.     点击顶部导航云服务->网络->负载均衡,进入应用负载均衡页面。可以看到刚新建的的LoadBalancer。


1.png

访问服务

1.     在新建的负载均衡服务页面,获取到公网IP, 在浏览器端输入http://公网IP:5000,可看到如下界面。


1.png

2.     浏览器中输入 http://公网IP:5000/hello/XXX ,则页面展示hello: XXX, 如下图所示:

1.png

第三步:业务监控告警

查看监控图

1.     选择云服务->监控与运维-> 云监控,进入云监控控制台。


1.png


2.     在左侧菜单选中“自定义监控”,进入自定义监控页面。


1.png


注:待服务部署成功后等待约5分钟云监控会查询到相关数据。

3.     输入以下查询条件,可以看到Demo示例内置采集的一些业务数据。查询条件如下:

a.     地域:选择华北-北京

b.    命名空间:选择kubernetes集群(系统)

c.     监控指标:选择 requests_total 指标较多,下拉可以搜索框搜索找到该指标  注:该指标为示例代码中定义收集的业务指标

d.    聚合方式:选择sum

e.     维度信息中, cluster_id请选择kubernetes集群的ID

1.png


4.     若指定维度中,name 对应下拉框中,选择对应值。可看到对应名称各自访问。


1.png

配置告警

1.     在上述查看的的监控图中,点击“配置报警”按钮


1.png

2.     进入设置告警页面,进行如下配置:


【基本信息】

a.     报警规则名称:可以自定义,例如:访问10次就告警

b.    地域、命名空间、监控指标和聚合方式,默认监控图查询配置带过来的信息

c.     监控维度: 指定cluster_id 为我们创建的kubernetes集群的ID;name 选择全部,同时选中聚合

1.png

【触发条件】

      统计周期选择 5分钟,统计方式选择 总和, 操作符选择 >,阈值中输入10, 选中持续1个周期。(其含义为: request_toal 求和>10,统计周期5分钟,持续1个这样的周期就报警

1.png

【通知策略】

通知周期、有效时段、通知条件、接收渠道为默认值。配置需要通知的联系人。

3.     完成以上配置,点击“完成创建”按钮。在列表中可看到该规则信息。

1.png1.png

注:当http://公网IP:5000/hello/XXX 达到设置的阈值时,会通过短信和邮件进行通知

 

思考题

1.    Kubernetes集群开启业务监控监控数据,在创建集群和创建Service时,要做哪些配置和操作?

2.    在自定义监控查询监控图时, 某维度选择了多个值,选中和取消选中“聚合”选项, 分别代表什么含义?

3.    在配置监控告警时,如下截图的A配置和B配置,其含义都表示:request_total指标,指定clusterid,其他维度和维度值都按照sum方式聚合,在5分钟内的平均值大于10,持续1个这样的周期,就报警。是否正确?

1.jpg

4.    在配置监控告警时,如果要配置,request_total指标,指定clusterid,name中任意一个维度值,在5分钟内的求和值大于10,持续1个这样的周期,就报警。 在上题截图中A配置,我需要做哪些调整?

 

三、  结束


恭喜完成所有任务!

请根据个人兴趣继续探索思考题。

完毕后请及时释放不再继续使用的资源。

谢谢!

                      


共0条评论
文章数
482
阅读量
2323998

相关产品

  • Kubernetes 集群
    采用管理节点全托管的方式,提供简单易用、高可靠、功能强大的容器管理服务
  • 容器镜像仓库
    全托管的Docker镜像管理服务
  • 私有网络
    安全隔离的网络空间,灵活部署
  • 云编译
    提供持续构建、测试服务
  • 云监控
    立体化云产品数据监控,实时预警,稳定安全