c语言sscanf函数的用法是什么
261
2022-11-10
用heapster实现HPA
Horizontal Pod Autoscaling(Pod水平自动伸缩),简称HPA。HAP通过监控分析RC或者Deployment控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量,这是HPA最基本的原理。HPA在kubernetes集群中被设计成一个controller,HPA Controller默认30s轮询一次(可通过kube-controller-manager的标志--horizontal-pod-autoscaler-sync-period进行设置),查询指定的资源(RC或者Deployment)中Pod的资源使用率,并且与创建时设定的值和指标做对比,从而实现自动伸缩的功能。HPA可以从两个地方获取数据:1、Heapster:仅支持CPU使用率2、自定义监控
安装配置heapsterdocker pull docker.io/zhaoqing/heapster-amd64:1.4.2$ docker pull docker.io/pupudaye/heapster-influxdb-amd64:v1.3.31、安装heapster数据库influxdb
--- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: monitoring-influxdb namespace: kube-system spec: replicas: 1 template: metadata: labels: task: monitoring k8s-app: influxdb spec: containers: - name: influxdb image: docker.io/pupudaye/heapster-influxdb-amd64:v1.3.3 volumeMounts: - mountPath: /data name: influxdb-storage volumes: - name: influxdb-storage emptyDir: {} --- apiVersion: v1 kind: Service metadata: labels: task: monitoring kubernetes.io/cluster-service: 'true' kubernetes.io/name: monitoring-influxdb name: monitoring-influxdb namespace: kube-system spec: ports: - port: 8086 targetPort: 8086 selector: k8s-app: influxdb
2、安装heapster
--- apiVersion: v1 kind: ServiceAccount metadata: name: heapster namespace: kube-system --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: dongyali-sa2-clusterrolebinding subjects: - kind: ServiceAccount name: heapster namespace: kube-system roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: heapster namespace: kube-system spec: replicas: 1 template: metadata: labels: task: monitoring k8s-app: heapster spec: serviceAccountName: heapster containers: - name: heapster image: docker.io/zhaoqing/heapster-amd64:1.4.2 imagePullPolicy: IfNotPresent command: - /heapster - --source=kubernetes:https://kubernetes.default - --sink=influxdb:http://monitoring-influxdb.kube-system.svc:8086 --- apiVersion: v1 kind: Service metadata: labels: task: monitoring kubernetes.io/cluster-service: 'true' kubernetes.io/name: Heapster name: heapster namespace: kube-system spec: ports: - port: 80 targetPort: 8082 selector: k8s-app: heapster
3、修改kube-controller-manager.yaml$ cd /etc/kubernetes/manifests/$ vim kube-controller-manager.yaml
spec: containers: - command: - kube-controller-manager - --horizontal-pod-autoscaler-use-rest-clients=false #增加
修改后自动生效4、创建应用pod用户测试hpa
apiVersion: apps/v1beta1 kind: Deployment metadata: name: hpa-nginx-deploy labels: app: nginx-demo spec: revisionHistoryLimit: 15 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx resources: requests: cpu: 100m ports: - containerPort: 80
5、针对上述pod创建hpa$ kubectl autoscale deployment hpa-nginx-deploy --cpu-percent=10 --min=1 --max=10设置最小的 pod 副本数为1,最大为10。HPA会根据设定的 cpu使用率(10%)动态的增加或者减少pod数量。$ kubectl get hpaNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS hpa-nginx-deploy Deployment/hpa-nginx-deploy 0%/10% 1 10 1 $ kubectl get hpa hpa-nginx-deploy -o yaml$ kubectl describe hpa hpa-nginx-deploy6、用压力测试查看hpa变化情况$ kubectl get pod -o wide|grep hpa hpa-nginx-deploy-7db6976d9b-p7llf 1/1 Running 0 155m 10.244.2.250 server242.example.com$ kubectl run -i --tty load-generator --image=busybox /bin/sh/ # while true; do wget -q -O- done在另一个终端查看$ kubectl get hpa$ kubectl get deployment hpa-nginx-deploy$ kubectl delete deployments.apps load-generator
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~