K8S部署Metrics-Server服务

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: K8S部署Metrics-Server服务

1.下载并解压Metrics-Server

https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gz

tar -zxvf v0.3.6.tar.gz

2.修改Metrics-Server配置文件

cd metrics-server-0.3.6/deploy/1.8+/

vim metrics-server-deployment.yaml

vim metrics-server-deployment.yaml文件(修改后的)

---

apiVersion: v1

kind: ServiceAccount

metadata:

 name: metrics-server

 namespace: kube-system

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: metrics-server

 namespace: kube-system

 labels:

   k8s-app: metrics-server

spec:

 selector:

   matchLabels:

     k8s-app: metrics-server

 template:

   metadata:

     name: metrics-server

     labels:

       k8s-app: metrics-server

   spec:

     serviceAccountName: metrics-server

     volumes:

     # mount in tmp so we can safely use from-scratch images and/or read-only containers

     - name: tmp-dir

       emptyDir: {}

     containers:

     - name: metrics-server

       image: mirrorgooglecontainers/metrics-server-amd64:v0.3.6

       imagePullPolicy: IfNotPresent

       command:

       - /metrics-server

       - --kubelet-insecure-tls

       - --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname

       volumeMounts:

       - name: tmp-dir

         mountPath: /tmp

       resources:

         limits:

           cpu: 300m

           memory: 200Mi

         requests:

           cpu: 200m

           memory: 100Mi

3.安装Metrics-Server

kubectl apply -f metrics-server-0.3.6/deploy/1.8+/

4.查看node信息

[root@master 1.8+]# kubectl top node

NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%  

master   289m         7%     1315Mi          48%      

node01   119m         2%     910Mi           33%      

node02   100m         2%     628Mi           23%

5、测试HPA

1)、创建部署deployment,这里设置副本数是1

apiVersion: v1

kind: Service

metadata:

 name: svc-hpa

 namespace: default

spec:

 selector:

   app: nginx

 type: NodePort  ##注意这里是NodePort,下面压力测试要用到。

 ports:

 - name: http

   port: 80

---

apiVersion: apps/v1

kind: Deployment

metadata:

 name: nginx-deployment

spec:

 replicas: 1

 selector:

    matchLabels:

      app: nginx

 template:

   metadata:

     labels:

       app: nginx

   spec:

     containers:

     - name: nginx

       image: docker.io/nginx

       ports:

       - containerPort: 80

       resources:

         limits:

            cpu: 50m

            memory: 50Mi

         requests:

            cpu: 50m

            memory: 50Mi

2)、设定自动扩容的条件

kubectl autoscale deployment nginx-deployment --max=3 --min=1 --cpu-percent=50

使用ab工具进行压测

先安装ab

yum -y install httpd-tools -y

3)、使用ab工具进行压测

ab -c 500 -n 2000 http://192.168.111.129:31379/

发现副本成两个了

[root@master test]# kubectl get pod

NAME                               READY   STATUS    RESTARTS   AGE

nginx-deployment-859b474bd-2nnlv   1/1     Running   0          60m

nginx-deployment-859b474bd-pfm4l   1/1     Running   0          4m38s

过一段时间又变成了一个

[root@master test]# kubectl get pod

NAME                               READY   STATUS        RESTARTS   AGE

nginx-deployment-859b474bd-2nnlv   1/1     Running       0          61m

nginx-deployment-859b474bd-pfm4l   0/1     Terminating   0          5m23s

[root@master test]# kubectl get pod

NAME                               READY   STATUS    RESTARTS   AGE

nginx-deployment-859b474bd-2nnlv   1/1     Running   0          61m

看下hpa

[root@master test]# kubectl get hpa

NAME               REFERENCE                     TARGETS   MINPODS   MAXPODS   REPLICAS   AGE

nginx-deployment   Deployment/nginx-deployment   10%/50%   1         3         1          50m

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes 持续交付 Docker
利用 Docker 和 Kubernetes 实现微服务部署
【10月更文挑战第2天】利用 Docker 和 Kubernetes 实现微服务部署
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
123 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
216 62
|
9天前
|
存储 Kubernetes 网络协议
k8s的无头服务
Headless Service 是一种特殊的 Kubernetes 服务,其 `spec:clusterIP` 设置为 `None`,不会分配 ClusterIP,通过 DNS 解析提供服务发现。与普通服务不同,Headless Service 不提供负载均衡功能,每个 Pod 都有唯一的 DNS 记录,直接映射到其 IP 地址,适用于有状态应用的场景,如与 StatefulSet 一起部署数据库。示例中通过创建 Nginx 的 StatefulSet 和 Headless Service,展示了如何直接访问单个 Pod 并进行内容修改。
22 3
|
5天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
14 0
|
1月前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
75 3
|
1月前
|
Kubernetes 网络协议 安全
[kubernetes]二进制方式部署单机k8s-v1.30.5
[kubernetes]二进制方式部署单机k8s-v1.30.5
|
6天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
26 1
|
27天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
下一篇
无影云桌面