你没见过的 Kubernetes 图形化

服务的监控与调度

Hello 好久不见,甚是想念,小刘今天来和大家谈谈容器的的图形化界面 ,主要还是 图形化界面的方面

生成结果

一、Prometheus

Prometheus简介:

Prometheus是由 SoundCloud开发的开源监控报警系统和时序列数据库。 Prometheus使用 Go语言开发,是 Google BorgMon监控系统的开源版本。2016年由 Google发起 Linux基金会旗下的原生云基金会, 将 Prometheus纳入其下第二大开源项目, Prometheus目前在开源社区相当活跃。

PrometheusHeapster(HeapsterK8S的一个子项目,用于获取集群的性能数据)相比功能更完善、更全面。 Prometheus性能也足够支撑上万台规模的集群。

组件说明:

  • MetricServer:是 K8S集群资源使用情况的聚合器,收集数据给 K8S集群内使用,如 kubectlhpascheduler
  • PrometheusOperator:是一个系统监测和警报工具箱,用来存储监控数据。
  • NodeExporter:用于各 node的关键度量指标状态数据。
  • KubeStateMetrics:收集 K8S集群内资源对象数据,制定告警规则。
  • Prometheus:采用 pull方式收集 apiserverschedulercontroller-managerkubelet组件数据,通过 http协议传输
  • Grafana:是可视化数据统计和监控平台

Prometheus 安装:

[root@master prometheus]

[root@master prometheus]

[root@master manifests]

[root@master manifests]
NAME                                   READY   STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2     Running   0          99s
alertmanager-main-1                    2/2     Running   0          88s
alertmanager-main-2                    2/2     Running   0          77s
grafana-7dc5f8f9f6-tlv9t               1/1     Running   0          3m20s
kube-state-metrics-5cbd67455c-tpxrv    4/4     Running   0          3m13s
node-exporter-gcgjr                    2/2     Running   0          3m19s
node-exporter-jtps7                    2/2     Running   0          3m19s
node-exporter-ndx2l                    2/2     Running   0          3m19s
prometheus-adapter-668748ddbd-npsg2    1/1     Running   0          3m19s
prometheus-k8s-0                       3/3     Running   1          99s
prometheus-k8s-1                       3/3     Running   1          99s
prometheus-operator-7447bf4dcb-wd7sw   1/1     Running   0          3m20s

[root@master manifests]
NAME      CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
master    192m         1%     1224Mi          65%
worker1   92m          0%     1147Mi          60%
worker2   91m          0%     1043Mi          55%
[root@master manifests]
NAME                      CPU(cores)   MEMORY(bytes)
deamonset-example-t9bfr   0m           2Mi
deamonset-example-v6lxj   0m           2Mi

访问 prometheushttp://192.168.182.100:30200 ):

除了页面可点击获取的信息外, prometheusWEB界面上提供了基本的查询 K8S集群中每个 PodCPU使用情况,查询条件如下:

sum by (pod_name)( rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ) )


访问 grafanahttp://192.168.182.100:30100 ): 初始密码均为 admin

grafana提供一个更人性化的图形化监控界面:

二、Horizontal Pod Autoscaling

工作节点安装 hpa实例镜像

[root@worker1 ~]
[root@worker1 ~]
REPOSITORY                                              TAG             IMAGE ID            CREATED             SIZE
gcr.io/google_containers/hpa-example                    latest          4ca4c13a6d7c        4 years ago         481MB

Horizontal Pod Autoscaling可以根据 CPU利用率自动伸缩一个 Replication ControllerDeployment或者 Replica Set中的 Pod数量:

[root@master prometheus]

[root@master prometheus]

[root@master prometheus]
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
php-apache   1/1     1            1           3m56s

[root@master prometheus]
NAME                         READY   STATUS    RESTARTS   AGE
php-apache-f44dcdb46-hxsc9   1/1     Running   0          7s

创建 HPA控制器:

[root@master prometheus]

增加负载,查看负载节点数目:

$ kubectl run -i --tty load-generator --image=busybox /bin/sh

$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

查看 hpapod状态:

[root@master prometheus]
NAME         REFERENCE               TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   0%/50%    1         10        1          3m16s
php-apache   Deployment/php-apache   0%/50%    1         10        1          3m18s
php-apache   Deployment/php-apache   384%/50%   1         10        1          3m33s

[root@master prometheus]
NAME                             READY   STATUS    RESTARTS   AGE
php-apache-f44dcdb46-dc9v6       1/1     Running   0          93m
php-apache-f44dcdb46-hhj25       1/1     Running   0          93m
php-apache-f44dcdb46-hqfv9       1/1     Running   0          93m
php-apache-f44dcdb46-hxsc9       1/1     Running   0          98m
[root@master prometheus]
NAME                             CPU(cores)   MEMORY(bytes)
php-apache-f44dcdb46-dc9v6       0m           8Mi
php-apache-f44dcdb46-hhj25       0m           8Mi
php-apache-f44dcdb46-hqfv9       0m           14Mi

三、资源限制

Pod:

Kubernetes对资源的限制实际上是通过 cgroup来控制的, cgroup是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、 CPU和各种设备都有对应的 cgroup

默认情况下, Pod运行没有 CPU和内存的限额。这意味着系统中的任何 Pod将能够像执行该 Pod所在的节点一样,消耗足够多的 CPU和内存。一般会针对某些应用的 pod资源进行资源限制,这个资源限制是通过 resourcesrequestslimits来实现。

spec:
  containers:
  - image: xxxx
    imagePullPolicy: Always
    name: auth
    resources:
      limits:
        cpu: "4"
        memory: 2Gi
      requests:
        cpu: 250m
        memory: 250Mi

requests要分分配的资源, limits为最高请求的资源值。可以简单理解为初始值和最大值。

名称空间:

计算资源配额:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    pods: "20"
    requests.cpu: "20"
    requests.memory: 100Gi
    limits.cpu: "40"
    limits.memory: 200Gi

配置对象数量配额限制:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
spec:
  hard:
    configmaps: "10"
    persistentvolumeclaims: "4"
    replicationcontrollers: "20"
    secrets: "10"
    services: "10"
    services.loadbalancers: "2"

配置CPU和内存LimitRange:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
    memory: 50Gi
    cpu: 5
  defaultRequest:
    memory: 1Gi
    cpu: 1
  type: Container

小伙子逼装的不错。和我学打毛线

好了,我继续来学习下,其他的图形化界面

DockerUI

简介

一个基于Docker API提供图形化页面的容器管理系统,支持简单的镜像管理、容器管理。

创建镜像

方法一

输入以下命令

docker run -d \
-p 9000:9000 \
-v /var/run/docker.sock:/docker.sock \
-e="/docker.sock" \
--name dockerui abh1nav/dockerui:latest

查看dockerui镜像文档

image

image

输入网址访问

image

方法二

通过Rest API管理(视频中未详细讲解)

[复制代码](javascript:void(0)😉

$docker run -d \
-p 9000:9000 \
--name dockerui \
-e "http://<dockerd host ip>:2375" \
abhlnav/dockerui:latest \
http://<dockerd host ip>:9000

[复制代码](javascript:void(0)😉

Shipyard

简介

基于Docker API实现的容器图形管理系统,支持container、images、engine、cluster等功能,满足基本容器部署需求,比DockerUI强大。

分为手动部署自动部署

所涉及的镜像:

image

手动部署

查看官方说明文档

https://shipyard-project.com/manual-deployment/

image

照着命令敲即可

使用默认账号admin,密码Shipyard登录查看

image

创建跟使用查询资料

image

使用到的命令

ps –ef | grep docker

ps –ef |grep ssh

看完《Docker技术入门与应用实战》视频第7章图形页面管理

自动部署

打开帮助文档

image

执行一条命令即可

curl –sSL https://shipyard-project.com/deploy | bash –s

将新节点加入swarm集群中命令

image

1、Rancher介绍

Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。

Rancher组成
  • 基础设施编排

    Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。

    Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络,存储,负载均衡,DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。

  • 容器编排与调度

    很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes和Mesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。

    除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。

  • 应用商店

​ Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店。

  • 企业级权限管理

​ Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。

Rancher展示

Web管理界面-简单易用

img

环境管理

环境和环境模板-支持多种调度器。

img

主机管理

img

应用商店

img

负载均衡

img

部署NFS连接外部存储

img

img

2、Rancher安装

采用docker方式安装。

(1)镜像下载

[docker@docker ~]$ docker search rancher
NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
rancher/server                                Rancher 1.x Server Container                    520                  
rancher/agent                                                                                 90                   
rancher/rancher                               A container management platform built for ...   62                   
rancher/os                                    Rancher OS installation container               39                   
cdrx/rancher-gitlab-deploy                    Painless deployment of projects built with...   20                   [OK]
rancher/k8s                                   Rancher Kubernetes Images                       17                   
janeczku/rancher-letsencrypt                  Rancher service that obtains and manages S...   14                   [OK]
adi90x/rancher-active-proxy                   All in one active reverse proxy for Rancher !   11                   [OK]
infinityworks/prometheus-rancher-exporter     Exposes Service/Stack/Host status from the...   7                    [OK]
rawmind/rancher-traefik                       This image is the traefik dinamic conf for...   4                    [OK]
identt/rancher-compose                        Alpine images with rancher-compose included     2                    [OK]
rancher/healthcheck                                                                           2                    
rancher/rancher-agent                                                                         2                    
rawmind/rancher-zk                            zookeeper service to run in rancher             1                    [OK]
rancher/dns                                                                                   1                    
rancher/net                                                                                   1                    
rancher/scheduler                                                                             1                    
rancher/metadata                                                                              0                    
hivesolutions/rancher_bot                     Simple bot for Rancher automation.              0                    [OK]
camptocamp/prometheus-rancher-metadata-conf   rancher-metadata confd prometheus template      0                    [OK]
camptocamp/fetch-rancher-certificate          Fetch rancher certificate from cattle API       0                    [OK]
markharrison17/dapi-pipeline-rancher          Repo for the DSS API Pipeline rancher cont...   0                    
janeczku/datadog-rancher-init                 Sidekick image for deploying DataDog Agent...   0                    [OK]
arwineap/concourse-rancher-compose-resource   concourse rancher compose resource              0                    [OK]
markharrison17/dapi-rancher                   DSS API Rancher control                         0   

(2)容器运行

[docker@docker ~]$ docker run --name rancher-server -p 8000:8080 -v /etc/localtime:/etc/localtime:ro  -d  rancher/server



a4a32619551c9c1ffd4c11f7c1da5d0297fa5bdf6eea103f045bbc837ea88f65

至此,安装完成,访问http://192.168.1.200:8000 ,体验吧。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值