一起来学k8s 22.二进制k8s集群安装Metrics-Server

二进制k8s集群安装Metrics-Server

环境准备

##/etc/hosts
192.168.48.101 master01
192.168.48.102 master02
192.168.48.103 master03
192.168.48.201 node01
192.168.48.202 node02
## keepalived的vip
192.168.48.66
IPHostnameCPUMemory
192.168.48.101master0124G
192.168.48.102master0224G
192.168.48.103master0324G
192.168.48.201node0124G
192.168.48.202node0224G
软件版本
kubernetes1.15.2
docker-ce19.03
calico3.8
etcd3.3.13
CNI0.8.1
coredns1.4.0
metrics-server0.3.3

下载地址

https://github.com/kubernetes-incubator/metrics-server

在这里插入图片描述
项目下载地址
链接: https://pan.baidu.com/s/1Jnzgs0OBS2K2j4_dflFc0Q 提取码: pfvf

[root@master01 ~]# unzip metrics-server-0.3.6.zip 

yaml文件在metrics-server-0.3.6/deploy/1.8+/

[root@master01 ~]# cd metrics-server-0.3.6/deploy/1.8+/
[root@master01 1.8+]# ll
total 28
-rw-r--r-- 1 root root 393 Oct 14 20:42 aggregated-metrics-reader.yaml
-rw-r--r-- 1 root root 308 Oct 14 20:42 auth-delegator.yaml
-rw-r--r-- 1 root root 329 Oct 14 20:42 auth-reader.yaml
-rw-r--r-- 1 root root 298 Oct 14 20:42 metrics-apiservice.yaml
-rw-r--r-- 1 root root 804 Oct 14 20:42 metrics-server-deployment.yaml
-rw-r--r-- 1 root root 291 Oct 14 20:42 metrics-server-service.yaml
-rw-r--r-- 1 root root 517 Oct 14 20:42 resource-reader.yaml

安装

修改yaml文件,添加参数

[root@master01 ~]# cd metrics-server-0.3.6/deploy/1.8+/
[root@master01 1.8+]# ll
total 28
-rw-r--r-- 1 root root 384 Jul 11 02:22 aggregated-metrics-reader.yaml
-rw-r--r-- 1 root root 308 Jul 11 02:22 auth-delegator.yaml
-rw-r--r-- 1 root root 329 Jul 11 02:22 auth-reader.yaml
-rw-r--r-- 1 root root 298 Jul 11 02:22 metrics-apiservice.yaml
-rw-r--r-- 1 root root 815 Jul 11 02:22 metrics-server-deployment.yaml
-rw-r--r-- 1 root root 291 Jul 11 02:22 metrics-server-service.yaml
-rw-r--r-- 1 root root 502 Jul 11 02:22 resource-reader.yaml

[root@master01 1.8+]# vim metrics-server-deployment.yaml 
...
- name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.6
        imagePullPolicy: IfNotPresent
        args:
          - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
          - --kubelet-insecure-tls

metrics-server镜像

k8s.gcr.io/metrics-server-amd64:v0.3.6
[root@master01 ~]# docker pull gcr.azk8s.cn/google-containers/metrics-server-amd64:v0.3.6

[root@master01 ~]# docker tag gcr.azk8s.cn/google-containers/metrics-server-amd64:v0.3.6 k8s.gcr.io/metrics-server-amd64:v0.3.6

链接: https://pan.baidu.com/s/1wnKCpBcY2YNKKTPwSnVW0g 提取码: agnv

导入metrics-server镜像

docker load -i metrics-0.3.6.tar.gz

创建metrics-server

[root@master01 ~]# cd metrics-server-0.3.6/deploy/1.8+/
[root@master01 1.8+]# kubectl apply -f .
[root@master01 1.8+]# kubectl get pod --all-namespaces 
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-7bd78b474d-r2tdd   1/1     Running   1          20h
kube-system   calico-node-cfckb                          1/1     Running   1          20h
kube-system   calico-node-kzqg6                          1/1     Running   1          20h
kube-system   calico-node-msmv2                          1/1     Running   1          20h
kube-system   calico-node-p2kvc                          1/1     Running   1          20h
kube-system   calico-node-q8tr4                          1/1     Running   1          20h
kube-system   coredns-5c6c9cf6c8-ppmf4                   1/1     Running   1          20h
kube-system   coredns-5c6c9cf6c8-x2sj2                   1/1     Running   1          20h
kube-system   metrics-server-55cb6d6b57-m9clg            1/1     Running   0          9s

[root@master01 ~]# kubectl top pods -n kube-system 
NAME                                       CPU(cores)   MEMORY(bytes)   
calico-kube-controllers-7bd78b474d-r2tdd   3m           14Mi            
calico-node-cfckb                          18m          70Mi            
calico-node-kzqg6                          20m          74Mi            
calico-node-msmv2                          18m          71Mi            
calico-node-p2kvc                          19m          71Mi            
calico-node-q8tr4                          19m          70Mi            
coredns-5c6c9cf6c8-ppmf4                   4m           10Mi            
coredns-5c6c9cf6c8-x2sj2                   3m           10Mi            
metrics-server-55cb6d6b57-m9clg            1m           14Mi            
[root@master01 ~]# kubectl top nodes
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master01   194m         9%     884Mi           23%       
master02   177m         8%     780Mi           20%       
master03   174m         8%     782Mi           20%       
node01     76m          3%     514Mi           13%       
node02     82m          4%     431Mi           11%       

HPA 水平伸缩

版本

通过kubectl api-versions可以看到,目前有3个版本:

autoscaling/v1            #只支持通过cpu为参考依据,来改变pod副本数
autoscaling/v2beta1       #支持通过cpu、内存、连接数以及用户自定义的资源指标数据为参考依据。
autoscaling/v2beta2       #同上,小的变动

部署HPA

SVC、Deployment资源清单
apiVersion: v1
kind: Service
metadata:
  name: svc-hpa
  namespace: default
spec:
  selector:
    app: myapp
  type: NodePort
  ports:
  - name: http
    port: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp-demo
      namespace: default
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
        resources:
          requests:
            cpu: 50m
            memory: 50Mi
          limits:
            cpu: 50m
            memory: 50Mi
HPA资源清单
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa-v2
  namespace: default
spec:
  minReplicas: 1         ##至少1个副本
  maxReplicas: 8         ##最多8个副本
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50  ##注意此时是根据使用率,也可以根据使用量:targetAverageValue
  - type: Resource
    resource:
      name: memory
      targetAverageUtilization: 50  ##注意此时是根据使用率,也可以根据使用量:targetAverageValue
测试
[root@master01 ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
myapp-5b79fd9968-w77mb   1/1     Running   0          50s
[root@master01 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        20h
svc-hpa      NodePort    10.102.225.82   <none>        80:30122/TCP   58s

使用ab工具模拟压力测试

yum install -y httpd-tools  
ab -r -c 1000 -n 5000000 http://master01:30122/hostname.html
[root@master01 ~]# kubectl get pod -w
NAME                     READY   STATUS    RESTARTS   AGE
myapp-5b79fd9968-w77mb   1/1     Running   0          10m
myapp-5b79fd9968-wn45p   0/1     Pending   0          0s
myapp-5b79fd9968-wn45p   0/1     Pending   0          0s
myapp-5b79fd9968-wn45p   0/1     ContainerCreating   0          0s
myapp-5b79fd9968-wn45p   0/1     ContainerCreating   0          3s
myapp-5b79fd9968-wn45p   1/1     Running             0          9s
myapp-5b79fd9968-7hh5t   0/1     Pending   0          0s
myapp-5b79fd9968-7hh5t   0/1     Pending   0          0s
myapp-5b79fd9968-7hh5t   0/1     ContainerCreating   0          0s
myapp-5b79fd9968-7hh5t   0/1     ContainerCreating   0          3s
myapp-5b79fd9968-7hh5t   1/1     Running             0          4s

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: K8s Metrics Server是一个Kubernetes集群中的组件,用于收集和存储集群中各种资源的度量数据,例如CPU、内存、网络等。它可以提供实时的度量数据,帮助管理员和开发人员更好地了解集群的状态和性能,并进行优化和调整。 ### 回答2: k8s metrics-server是Kubernetes的一个组件,它被设计用于收集集群内的性能指标。这些指标包括容器和节点的CPU使用率、内存使用量、网络I/O等等。利用这些指标,可以更好的了解集群中的资源使用情况,从而做出相应的资源分配和优化决策。 在Kubernetes中,集群管理员经常需要监控集群内部每个节点和容器的性能情况,这是为了确保应用程序在正确的资源调度下正常运行。为了监控这些性能指标,需要使用一些工具来帮助收集、分析和存储指标数据。而k8s metrics-server正是为此而设计的。 k8s metrics-server采用的是轻量级的部署模式,可以轻松地在Kubernetes集群中进行安装和配置。它具有以下优点: 1.快速部署:k8s metrics-server非常轻量,可以非常快速地部署到Kubernetes集群中。 2.高效:k8s metrics-server具有高效的数据收集和存储能力,能够实时地监控和收集节点和容器的性能指标。 3.可扩展:k8s metrics-server可以轻松地扩展到集群的规模,以便于更好地适应性能监控的需求。 总之,k8s metrics-server是Kubernetes集群内必备的性能指标收集器,以便于运维和开发人员更好地了解集群的性能情况,保障应用程序的可靠性和高可用性。 ### 回答3: K8s Metrics Server是一个通过K8s的APIs来收集、聚合以及输出资源的使用情况的组件,主要用于扩展Kubernetes集群的监控及自动化调整容器资源。通过Metrics Server,用户可以查看当前K8s集群的完整资源使用情况,并能够在资源不足或者超量使用时自动调整容器资源。 K8s Metrics Server的基本原理是通过启动一个服务,并通过访问K8s各种组件的API endpoints来获取当前容器和集群资源使用状态。Metrics Server在收集到的数据中,主要包括CPU、memory以及network的使用率、请求流量、响应时间等信息。同时,可以基于这些数据来为Pods、Deployments、DaemonSets等对象提供水平自动扩容和增量调整的服务。 在K8s Metrics Server中,最重要的组件是Heapster,它作为Metrics Server的扩展组件,负责对收集到的所有的K8s集群的资源使用数据进行经过处理之后进行监控和分析。通过Heapster可以实现的监控和提醒,包括对Pods、Deployments、DaemonSets等对象的资源使用情况的监控,集群负荷的观察,容器状态的查询等。 总的来说,K8s Metrics ServerK8s设计的一个非常重要的组件,它能够帮助K8s构建一个可靠的、基于资源监控的自动化调整平台,为用户提供可靠、高效的容器资源调度服务。对于企业用户而言,K8s Metrics Server的使用不仅能够提升企业应用的稳定性和可靠性,也能够降低系统维护与调整的成本,提升效率和便捷性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值