91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker中容器資源需求、資源限制及HeapSter的示例分析

發布時間:2021-11-19 11:43:57 來源:億速云 閱讀:195 作者:小新 欄目:開發技術

這篇文章主要介紹了docker中容器資源需求、資源限制及HeapSter的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

容器的資源需求、資源限制

    request:需求,最低保障,在調度時,這個節點必須要滿足request需求的資源大小。

    limits:限制、硬限制。這個限制容器無論怎么運行都不會超過limits的值。

    CPU:在k8s的一個cpu對應一顆宿主機邏輯cpu。一個邏輯cpu還可以劃分為1000個毫核(millcores)。所以500m=0.5個CPU,0.5m相當于二分之一的核心。

    內存的計量單位:E、P、T、G、M、K

[root@master scheduler]# kubectl explain pods.spec.containers.resources.requests
[root@master scheduler]# kubectl explain pods.spec.containers.resources.limits
[root@master metrics]# cat pod-demo.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: ikubernetes/stress-ng:v1
    command: ["/usr/bin/stress-ng", "-m 1", "-c 1", "--metrics-brief"] #-m 1表示啟動一個子進程對內存做壓測,-c 1表示啟動一個子進程對cpu做壓測.默認stress-ng的一個子進程使用256M內存
    resources:
      requests:
        cpu: "200m"
        memory: "128Mi"
      limits:
        cpu: "1" #沒有單位表示是1個cpu
        memory: "200Mi"
[root@master metrics]# kubectl apply -f pod-demo.yaml 
pod/pod-demo created
[root@master metrics]# kubectl get pods -o wide
NAME                READY     STATUS              RESTARTS   AGE       IP            NODE
pod-demo            1/1       Running             0          6m        10.244.2.48   node2
[root@master metrics]# kubectl exec -it pod-demo -- /bin/sh
/ # top
Mem: 3542328K used, 339484K free, 123156K shrd, 3140K buff, 1737252K cached
CPU:  21% usr   4% sys   0% nic  73% idle   0% io   0% irq   0% sirq
Load average: 1.31 1.00 0.74 4/968 1405
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    8     1 root     R     6884   0%   1  15% {stress-ng-cpu} /usr/bin/stress-ng -m 1 -c 1 --metrics-brief
 1404     9 root     R     262m   7%   3  12% {stress-ng-vm} /usr/bin/stress-ng -m 1 -c 1 --metrics-brief
    9     1 root     S     6244   0%   2   0% {stress-ng-vm} /usr/bin/stress-ng -m 1 -c 1 --metrics-brief
    1     0 root     S     6244   0%   0   0% /usr/bin/stress-ng -m 1 -c 1 --metrics-brief
 1202     0 root     S     1508   0%   0   0% /bin/sh
 1405  1202 root     R     1500   0%   0   0% top

    我們對容器分配了資源限制后,k8s會自動分配一個Qos,叫服務質量,通過kubectl describe pods xxx可以看到這個字段。

    Qos可以分為三類:

        Guranteed:表示每個容器的cpu和內存資源設置了相同的requests和limits值,即cpu.requests=cpu.limits和memory.requests=memory.limits,Guranteed會確保這類pod有最高的優先級,會被優先運行的,即使節點上的資源不夠用。

        Burstable:表示pod中至少有一個容器設置了cpu或內存資源的requests屬性,可能沒有定義limits屬性,那么這類pod具有中等優先級。

        BestEffort:指沒有任何一個容器設置了requests或者limits屬性,那么這類pod是最低優先級。當這類pod的資源不夠用時,BestEffort中的容器會被優先終止,以便騰出資源來,給另外兩類pod中的容器正常運行。

 HeapSter   

docker中容器資源需求、資源限制及HeapSter的示例分析

    HeapSter的作用是收集個節點pod的資源使用情況,然后以圖形界面展示給用戶。

    kubelet中的cAdvisor負責收集每個節點上的資源使用情況,然后把信息存儲HeapSter中,HeapSter再把數據持久化的存儲在數據庫InfluxDB中。然后我們再通過非常優秀的Grafana來圖形化展示。

    一般我們監控的指標包括k8s集群的系統指標、容器指標和應用指標。

    默認InfluxDB使用的是存儲卷是emptyDir,容器一關數據就沒了,所以我們生產要換成glusterfs等存儲卷才行。

    InfluxDB: https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/influxdb.yaml

    [root@master metrics]# wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml

[root@master metrics]# kubectl apply -f influxdb.yaml 
deployment.extensions/monitoring-influxdb created
service/monitoring-influxdb created
[root@master metrics]# kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
monitoring-influxdb    ClusterIP   10.100.80.21   <none>        8086/TCP        17s
[root@master metrics]# kubectl get pods -n kube-system
NAME                                   READY     STATUS    RESTARTS   AGE
monitoring-influxdb-848b9b66f6-ks69q   1/1       Running   0          10m
[root@master metrics]# kubectl log monitoring-influxdb-848b9b66f6-ks69q -n kube-system

    這樣我們就部署好了influxdb。

    下面我們開始部署heapster,但heapster依賴rbac。

    所以我們先部署rbac,訪問 https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/rbac

[root@master metrics]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
clusterrolebinding.rbac.authorization.k8s.io/heapster created

   所以下面我就可以部署heapster了。

    訪問 https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/heapster.yaml

[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml
serviceaccount/heapster created
deployment.extensions/heapster created
service/heapster created
[root@master ~]# kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
heapster               ClusterIP   10.100.35.112   <none>        80/TCP          1m
[root@master ~]# kubectl get pods -n kube-system -o wide
NAME                                   READY     STATUS    RESTARTS   AGE       IP             NODE
heapster-84c9bc48c4-8h7vf              1/1       Running   0          9m        10.244.1.63    node1
[root@master ~]# kubectl logs heapster-84c9bc48c4-8h7vf -n kube-system

    上面我們把heapster組件裝完了,下面我們再裝Grafana。

    訪問 https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/grafana.yaml

    我們為了能在集群外部訪問Grafana,所以我們需要定義NodePort,所以在granfana.yaml文件最后一行加個type: NodePort

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml
[root@master ~]# tail  grafana.yaml 
  # or through a public IP.
  # type: LoadBalancer
  # You could also use NodePort to expose the service at a randomly-generated port
  # type: NodePort
  ports:
  - port: 80
    targetPort: 3000
  selector:
    k8s-app: grafana
  type: NodePort
[root@master ~]# kubectl apply -f grafana.yaml 
deployment.extensions/monitoring-grafana created
service/monitoring-grafana created
[root@master ~]#  kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
heapster               ClusterIP   10.100.35.112   <none>        80/TCP          22m
kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP   37d
kubernetes-dashboard   NodePort    10.104.8.78     <none>        443:31647/TCP   16d
monitoring-grafana     NodePort    10.96.150.141   <none>        80:30357/TCP    2m
monitoring-influxdb    ClusterIP   10.100.80.21    <none>        8086/TCP        11h
[root@master ~]#  kubectl get pods -n kube-system
NAME                                   READY     STATUS    RESTARTS   AGE
monitoring-grafana-555545f477-qhb28    1/1       Running   0          5m

    打開瀏覽器,訪問宿主機ip:http://172.16.1.100:30357

docker中容器資源需求、資源限制及HeapSter的示例分析

    據說在v1.12中,已經完全拋棄了heapster。

root@master ~]# kubectl top nodes
[root@master ~]# kubectl top pod

    按理說執行上面的兩個命令可以出結果,但是k8s從v1.11后不能用了,也無可奈何。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“docker中容器資源需求、資源限制及HeapSter的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

读书| 吐鲁番市| 东丰县| 菏泽市| 鹿邑县| 株洲市| 巫山县| 阜阳市| 浮山县| 苏尼特右旗| 临湘市| 磴口县| 兴文县| 长春市| 昌江| 新昌县| 武宁县| 皋兰县| 噶尔县| 秀山| 垦利县| 高密市| 海淀区| 盐源县| 中西区| 章丘市| 平潭县| 棋牌| 祁连县| 武定县| 札达县| 潜江市| 云梦县| 海伦市| 姚安县| 钟山县| 商都县| 赫章县| 和林格尔县| 博客| 潢川县|