kubectl exec:
kubectl exec -it pod-name -c container-name -- /bin/sh
kubectl run
通过一个 deployment来 演示
apiVersion: apps/v1
kind: Deployment
metadata:name: deploylabels: app: deploy
spec: replicas: 1selector: matchLabels:app: deploy-podtemplate:metadata:name: deploy-podlabels:app: deploy-podspec:containers:- name: deploy-conimage: nginxcommand: ["/bin/sh"]args: ["-c", "while true;do wget -q -O http:127.0.0.1 > /dev/null; done"]livenessProbe:# startupProbe:# readinessProbe:httpGet:path: /index.htmlport: 80successThreshold: 1failureThreshold: 3periodSeconds: 3timeoutSeconds: 5env: - name: ARGSvalue: hhhhhresources:requests:cpu: 100mmemory: 128Milimits:cpu: 200mmemory: 128MivolumeMounts:# - name: my-volumes# mountPath: /app- name: my-volumes2mountPath: /app2volumes: - name: my-volumes2hostPath:path: /app2# volumeClaimTemplates:# - metadata: # name: my-volumes# spec: # accessModes: ['ReadWriteOnce']# resources:# requests: # storage: '200Mi'
最小2个node 最大5个
spec.containers[0].resources
requests: min
limits: max
执行:
为
kubectl autoscale deploy deploy --cpu-percent=20 --min=2 --max=5
my-deploy 创建 HPA
kubectl top 查看 pod 或 node 的占用指标 (metrics)
表示 pod一旦创建 ,就一直 死循环请求 nginx页面,造成 cpu 升高,让 hpa 自动扩展 pod
数量
超过所限制的 100m 后自动 扩展 pod1 数量
kubectl exec -it pod-name -c container-name --/bin/bash 执行这个 pod里面的容器 curl 127.0.0.1查看nginx
但是 如果对 该pod 直接 执行 curl 则无法访问
原因是:
创建一个 service.yaml
重点是kind:service里面 selector 没有 matchLabels 直接写 labels
要和上面的 pod模版里面的 labels 对应上,这样可以 通过 service 实现服务发现
直接 访问 service 的ip 就可访问 pod的 服务,而不用关心pod的ip地址,流量可能打到 任何和 service 绑定的 pod 上面。
类式docker 的 【routing mesh 】思想,
apiVersion: v1
kind: Service
metadata:name: deploy-servicelabels:app: deploy-service
spec: ports: - port: 80targetPort: 80name: deploy-service-podselector: app: deploy-podtype: NodePort
查看 service 与之关联的 pod
这里我用的 是minikube 可以,将 minikube内部ip 和 主机ip 打通
minikube service service-name
现在 通过 一个死循环的方式 一直 请求这个 servive,让pod的 cpu升高 ,