华为云k8s

1. 申请公有云K8S集群

(1)登录华为云

登录华为云网站,进入“控制台”,选择“服务列表”-“容器”-“云容器引擎”服务。进入服务首页后选择购买“云容器引擎CCE”服务。如图1所示。

图1 云容器引擎CCE

在跳转页面单击CCE集群下的”创建“按钮。

(2)购买CCE

购买“云容器引擎CCE”服务,选择按需计费,集群名称为k8s-chinaskill,集群规格为单控制节点的cce.s1.small,集群版本为v1.21,如图2所示。

图2 购买集群参数

虚拟机节点名称为k8s-chinaskill-controller,节点规格选择s6.xlarge.2 4核 | 8GB,操作系统选择CentOS 7.6,如图3所示。下滑页面,密码设为Abc@1234,其他默认,单击“下一步:配置确认”按钮。然后选择默认插件(必装系统资源插件),确认配置,勾选”我已知晓上述限制“,单击”提交“按钮,完成服务购买。

图3 购买集群控制节点参数

(3)集群控制节点绑定外网

为CCE容器节点虚拟机绑定弹性公网。选择“服务列表”-“计算”-“弹性云服务器ECS”服务,找到上一步创建的k8s-chinaskill-controller云服务器,选择更多,点击“网络设置==》绑定弹性公网IP”。如果有空闲的弹性公网IP,直接选择并绑定;如果没有,就按照弹窗提示购买新的弹性公网IP,之后重新进入弹性云服务器ECS”服务首页,为该云主机绑定弹性公网IP。如图4、图5、图6所示。

图4 绑定弹性公网1

图5 购买弹性公网

图6 绑定弹性公网2

复制云服务器的弹性公网IP地址119.3.255.145,可以使用CRT连接工具连接到k8s-chinaskill-controller节点,用户名为root,密码为购买服务时配置的密码。(如果连接失败,可以检查一下该云服务器的安全组规则,并修改为开放所有端口。)

(4)部署kubectl工具

选择“服务列表”-“计算”-“云容器引擎CCE”服务,点击菜单栏中的“资源管理”-“集群管理”,可以对购买的CCE集群服务进行管理;这里我们点击k8s-chinaskill集群命令行工具中的kubectl按钮。如图7所示。

图7 kubectl

在新打开的页面中可以看到集群部署kubectl工具的步骤。如图8所示。

图8 部署kubectl工具

点击图8中的“此处”连接,将kubectl的配置文件kubeconfig.json下载下来。

使用CRT等SSH连接工具,通过上面绑定的弹性公网IP地址访问CCE集群的控制节点,将刚刚下载下来的配置文件kubeconfig.json上传到该节点中,并执行 mkdir -p $HOME/.kube 与 mv -f kubeconfig.json $HOME/.kube/config 这两个步骤,就完成kubectl工具的部署了。

kubectl工具部署完成后,执行kubectl cluster-info命令查看集群信息。

[root@k8s-chinaskill-controller ~]#  mkdir -p $HOME/.kube
[root@k8s-chinaskill-controller ~]#  mv -f kubeconfig.json $HOME/.kube/config
[root@k8s-chinaskill-controller ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.0.178:5443
CoreDNS is running at https://192.168.0.178:5443/api/v1/namespaces/kube-system/services/coredns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

2. 安装prometheus插件

(1)安装插件

进入“云容器引擎”服务,点击“插件管理”,在插件市场中找到prometheus监控插件,点击“安装插件”按钮。如图9所示。

图9 安装插件

选择k8s-chinaskill集群,点击下一步,全部默认规格配置,点击安装。如图10所示。

图10 选择k8s-chinaskill集群

安装完成后,点击“查看插件详情”,在“插件实例详情”中,等待prometheus监控插件所有资源全部显示运行中就可以了,如图11所示。

图11 prometheus插件运行

(2)新建prometheus的公网LoadBalancer类型service。

在“云容器引擎”服务中,进入“资源管理”下的“网络管理”,点击“添加Service”按钮,选择“负载均衡”服务。如图12所示。

图12 使用负载均衡访问服务

设置prometheus-lbl的service配置,访问类型为“负载均衡”,service名称为prometheus-lbl(不能重复使用相同的service名字);选择k8s-chinaskill集群,选择monitoring命名空间,关联prometheus工作负载;配置容器端口为9090,访问端口为9090;其他全部选择默认选项。如图13、图14、图15所示。

图13 prometheus-lbl的service配置1

图14 prometheus-lbl的service配置2

图15 prometheus-lbl的service配置3

购买的service服务创建完成后,可以在网络管理中看到创建的prometheus-lbl服务。如图16所示。

图16 prometheus-lbl服务

(3)新建grafana的公网LoadBalancer类型service

在“云容器引擎”服务中,进入“资源管理”下的“网络管理”,点击“添加Service”按钮,选择“负载均衡”服务。

设置grafana-lbl的service配置,访问类型为“负载均衡”,service名称为grafana-lbl(不能重复使用相同的service名字);选择k8s-chinaskill集群,选择monitoring命名空间,关联grafana工作负载;负载均衡设置选择上一步中已经创建的负载均衡服务“cce-lb-*”;配置容器端口为3000,访问端口为3000;其他全部选择默认选项。如图17、图18、图19、图20所示。

图17 grafana-lbl的service配置1

图18 grafana-lbl的service配置2

图19 grafana-lbl的service配置3

图20 grafana-lbl的service配置4

购买的service服务创建完成后,可以在网络管理中看到创建的grafana-lbl服务。如图21所示。

图21 grafana-lbl服务

(4)访问监控服务

通过图16和图21中两个lbl服务的外网访问路径120.46.146.49:9090、120.46.146.49:3000分别访问prometheus监控服务和grafana数据图表服务页面。如图22、图23所示。

图22 prometheus监控服务首页

图23 grafana数据图表服务首页

(5)查看k8s-chinaskill集群监控状态

由于是使用CCE集群的插件模式安装prometheus服务,所以prometheus监控服务已经自动部署了对宿主集群k8s-chinaskill的监控。

进入prometheus监控服务首页,查看Status ==》targets服务,可以看到对集群k8s-chinaskill的监控端口。如图24所示。

图24 targets服务

进入grafana服务首页,点击右上角的Home按钮,选择1-kubernetes-deployment-statefulset-daemonset-metrics的dashboard数据图表,可以看到对集群k8s-chinaskill的数据图表解析。如图25所示。

图25 1-kubernetes-deployment-statefulset-daemonset-metrics

3. 添加对CCE集群中Nginx 容器服务监控

(1)创建可监控的Nginx 容器

CRT连接到k8s-chinaskill集群的控制节点,并使用kubectl工具部署Nginx服务,并添加prometheus的监控数据采集接口。

[root@k8s-chinaskill-controller ~]# docker pull nginx:1.21.5-alpine
[root@k8s-chinaskill-controller ~]# mkdir /root/nginx-exporter
[root@k8s-chinaskill-controller ~]# cd nginx-exporter/
[root@k8s-chinaskill-controller nginx-exporter]# cat nginx.conf
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;

    server {
      listen 8080;
      server_name  localhost;
      location /stub_status {
         stub_status on;
         access_log off;
      }
    }
}

[root@k8s-chinaskill-controller nginx-exporter]# cat Dockerfile
FROM nginx:1.21.5-alpine
ADD nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

[root@k8s-chinaskill-controller nginx-exporter]# docker build -t nginx:exporter .
[root@k8s-chinaskill-controller nginx-exporter]# cd
[root@k8s-chinaskill-controller ~]# docker pull nginx/nginx-prometheus-exporter:0.9.0
[root@k8s-chinaskill-controller ~]# cat nginx-exporter.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx-exporter
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-exporter
  template:
    metadata:
      labels:
        app: nginx-exporter
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "9113"
        prometheus.io/path: "/metrics"
        prometheus.io/scheme: "http"
    spec:
      containers:
        - name: container-0
          image: 'nginx:exporter'
          resources:
            limits:
              cpu: 250m
              memory: 512Mi
            requests:
              cpu: 250m
              memory: 512Mi
        - name: container-1
          image: 'nginx/nginx-prometheus-exporter:0.9.0'
          command:
            - nginx-prometheus-exporter
          args:
            - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status'
      imagePullSecrets:
        - name: default-secret

[root@k8s-chinaskill-controller ~]# kubectl apply -f nginx-exporter.yaml
deployment.apps/nginx-exporter created
[root@k8s-chinaskill-controller ~]# kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
nginx-exporter-6ff78759bc-sscbs   2/2     Running   0          3s

(2)查看prometheus监控

由于是使用容器创建的Nginx服务,所以进入prometheus监控targets服务中,我们就可以在Kubenetes-pod中看到对Nginx的服务器监控。如图26所示。

图26 Nginx服务监控

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值