国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

kubernetes|云原生|Deployment does not have minimum availability 的解決方案(資源隱藏的由來)

這篇具有很好參考價值的文章主要介紹了kubernetes|云原生|Deployment does not have minimum availability 的解決方案(資源隱藏的由來)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

最近在部署prometheus的過程中遇到的這個問題,感覺比較的經(jīng)典,有必要記錄一下。

現(xiàn)象是部署prometheus主服務(wù)的時候,看不到pod,只能看到deployment,由于慌亂,一度以為是集群有毛病了,然后重新做了集群,具體情況如下圖:

注:up-to-date表示沒有部署,available表示無可用pod

[root@node4 yaml]# k get deployments.apps -n monitor-sa 
NAME                READY   UP-TO-DATE   AVAILABLE   AGE
prometheus-server   0/2     0            0           2m5s
[root@node4 yaml]# k get po -n monitor-sa 
NAME                                 READY   STATUS        RESTARTS   AGE
node-exporter-6ttbl                  1/1     Running       0          23h
node-exporter-7ls5t                  1/1     Running       0          23h
node-exporter-r287q                  1/1     Running       0          23h
node-exporter-z85dm                  1/1     Running       0          23h

部署文件如下;

注意注意,有一個sa的引用哦??serviceAccountName: monitor

[root@node4 yaml]# cat prometheus-deploy.yaml 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-server
  namespace: monitor-sa
  labels:
    app: prometheus
spec:
  replicas: 2
  selector:
    matchLabels:
      app: prometheus
      component: server
    #matchExpressions:
    #- {key: app, operator: In, values: [prometheus]}
    #- {key: component, operator: In, values: [server]}
  template:
    metadata:
      labels:
        app: prometheus
        component: server
      annotations:
        prometheus.io/scrape: 'false'
    spec:
      nodeName: node4
      serviceAccountName: monitor
      containers:
      - name: prometheus
        image: prom/prometheus:v2.2.1
        imagePullPolicy: IfNotPresent
        command:
          - prometheus
          - --config.file=/etc/prometheus/prometheus.yml
          - --storage.tsdb.path=/prometheus
          - --storage.tsdb.retention=720h
        ports:
        - containerPort: 9090
          protocol: TCP
        volumeMounts:
        - mountPath: /etc/prometheus/prometheus.yml
          name: prometheus-config
          subPath: prometheus.yml
        - mountPath: /prometheus/
          name: prometheus-storage-volume
      volumes:
        - name: prometheus-config
          configMap:
            name: prometheus-config
            items:
              - key: prometheus.yml
                path: prometheus.yml
                mode: 0644
        - name: prometheus-storage-volume
          hostPath:
           path: /data
           type: Directory

?

解決方案:

那么,遇到這種情況,我們應(yīng)該怎么做呢?當然了,第一點就是不要慌,其次deployment控制器有一個比較不讓人注意的地方,就是編輯deployment可以看到該deployment的當前狀態(tài)詳情,會有非常詳細的信息給我們看,也就是status字段

具體的命令是?kubectl?edit?deployment -n?命名空間? deployment名稱,在本例中是這樣的:

。。。。。。略略略   
         path: prometheus.yml
          name: prometheus-config
        name: prometheus-config
      - hostPath:
          path: /data
          type: Directory
        name: prometheus-storage-volume
status:
  conditions:
  - lastTransitionTime: "2023-11-22T15:21:06Z"
    lastUpdateTime: "2023-11-22T15:21:06Z"
    message: Deployment does not have minimum availability.
    reason: MinimumReplicasUnavailable
    status: "False"
    type: Available
  - lastTransitionTime: "2023-11-22T15:21:06Z"
    lastUpdateTime: "2023-11-22T15:21:06Z"
    message: 'pods "prometheus-server-78bbb77dd7-" is forbidden: error looking up
      service account monitor-sa/monitor: serviceaccount "monitor" not found'
    reason: FailedCreate
    status: "True"
    type: ReplicaFailure
  - lastTransitionTime: "2023-11-22T15:31:07Z"
    lastUpdateTime: "2023-11-22T15:31:07Z"
    message: ReplicaSet "prometheus-server-78bbb77dd7" has timed out progressing.
    reason: ProgressDeadlineExceeded
    status: "False"
    type: Progressing
  observedGeneration: 1
  unavailableReplicas: 2

可以看到有三個message,第一個是標題里提到的報錯信息,在dashboard里這個信息會優(yōu)先顯示,如果是報錯的時候,第二個message是進一步解釋錯誤問題在哪,本例里是說有個名叫?monitor的sa沒有找到,第三個信息說的是這個deployment控制的rs部署失敗,此信息無關(guān)緊要了,那么,重要的是第二個信息,這個信息是解決問題的關(guān)鍵。

附:一個正常的deployment?的status:

這個status告訴我們,他是一個副本,部署成功的,因此,第一個message是Deployment has minimum availability

      serviceAccount: kube-state-metrics
      serviceAccountName: kube-state-metrics
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 1
  conditions:
  - lastTransitionTime: "2023-11-21T14:56:14Z"
    lastUpdateTime: "2023-11-21T14:56:14Z"
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  - lastTransitionTime: "2023-11-21T14:56:13Z"
    lastUpdateTime: "2023-11-21T14:56:14Z"
    message: ReplicaSet "kube-state-metrics-57794dcf65" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  observedGeneration: 1
  readyReplicas: 1
  replicas: 1
  updatedReplicas: 1

具體的解決方案:

根據(jù)以上報錯信息,那么,我們就需要一個sa,當然了,如果不想給太高的權(quán)限,就需要自己編寫權(quán)限文件了,這里我偷懶?使用cluster-admin,具體的命令如下:

[root@node4 yaml]# k create sa -n monitor-sa monitor
serviceaccount/monitor created
[root@node4 yaml]# k create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin  --serviceaccount=monitor-sa:monitor

再次部署就成功了:

[root@node4 yaml]# k get po -n monitor-sa  -owide
NAME                                 READY   STATUS      RESTARTS        AGE   IP               NODE    NOMINATED NODE   READINESS GATES
node-exporter-6ttbl                  1/1     Running     0               24h   192.168.123.12   node2   <none>           <none>
node-exporter-7ls5t                  1/1     Running     0               24h   192.168.123.11   node1   <none>           <none>
node-exporter-r287q                  1/1     Running     1 (2m57s ago)   24h   192.168.123.14   node4   <none>           <none>
node-exporter-z85dm                  1/1     Running     0               24h   192.168.123.13   node3   <none>           <none>
prometheus-server-78bbb77dd7-6smlt   1/1     Running     0               20s   10.244.41.19     node4   <none>           <none>
prometheus-server-78bbb77dd7-fhf5k   1/1     Running     0               20s   10.244.41.18     node4   <none>           <none>

總結(jié)來了:

那么,其實缺少sa可能會導(dǎo)致pod被隱藏,可以得出,sa是這個deployment的必要非顯性依賴,同樣的,如果部署文件內(nèi)有寫configmap,但configmap并沒有提前創(chuàng)建也會出現(xiàn)這種錯誤,就是創(chuàng)建了deployment,但pod創(chuàng)建不出來,不像namespace沒有提前創(chuàng)建的情況,namespace是必要顯性依賴,沒有會直接不讓創(chuàng)建。

配額設(shè)置也是和sa一樣的必要非顯性依賴。

例如,下面創(chuàng)建一個針對default這個命名空間的配額文件,此文件定義如下:

定義的內(nèi)容為規(guī)定default命名空間下最多4個pods,最多20個services,只能使用10G的內(nèi)存,5.5的CPU

[root@node4 yaml]# cat quota-nginx.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: quota
  namespace: default
spec:
  hard:
    requests.cpu: "5.5"
    limits.cpu: "5.5"
    requests.memory: 10Gi
    limits.memory: 10Gi
    pods: "4"
    services: "20"

下面創(chuàng)建一個deployment,副本是6個的nginx:

[root@node4 yaml]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: "2023-11-22T16:13:33Z"
  generation: 1
  labels:
    app: nginx
  name: nginx
  namespace: default
  resourceVersion: "16411"
  uid: e9a5cdc5-c6f0-45fb-a001-fcdd695eb925
spec:
  progressDeadlineSeconds: 600
  replicas: 6
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.18
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        resources:
          limits:
            cpu: 1
            memory: 1Gi
          requests:
            cpu: 500m
            memory: 512Mi
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

創(chuàng)建完畢后,發(fā)現(xiàn)只有四個pod,配額有效:

[root@node4 yaml]# k get po
NAME                     READY   STATUS    RESTARTS   AGE
nginx-54f9858f64-g65pk   1/1     Running   0          4m50s
nginx-54f9858f64-h42vf   1/1     Running   0          4m50s
nginx-54f9858f64-s776t   1/1     Running   0          4m50s
nginx-54f9858f64-wl7wz   1/1     Running   0          4m50s

那么,還有兩個pod呢?

[root@node4 yaml]# k get deployments.apps nginx -oyaml |grep message
    message: Deployment does not have minimum availability.
    message: 'pods "nginx-54f9858f64-p8rxf" is forbidden: exceeded quota: quota, requested:
    message: ReplicaSet "nginx-54f9858f64" is progressing.

那么解決的方法也很簡單,也就是調(diào)整quota啦,怎么調(diào)整就不在這里廢話了吧!?。。。。。。?!~~~~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-774521.html

到了這里,關(guān)于kubernetes|云原生|Deployment does not have minimum availability 的解決方案(資源隱藏的由來)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【云原生】Kubernetes工作負載-Deployment

    一個 Deployment 為 Pod 和 ReplicaSet 提供聲明式的更新能力 你負責(zé)描述 Deployment 中的目標狀態(tài),而 Deployment 控制器(Controller) 以受控速率更改實際狀態(tài), 使其變?yōu)槠谕麪顟B(tài)。你可以定義 Deployment 以創(chuàng)建新的 ReplicaSet,或刪除現(xiàn)有 Deployment, 并通過新的 Deployment 收養(yǎng)其資源 下面是

    2024年02月16日
    瀏覽(19)
  • 【云原生】Kubernetes中deployment是什么?

    【云原生】Kubernetes中deployment是什么?

    ? ? 目錄 Deployments 更新 Deployment 回滾 Deployment 縮放 Deployment Deployment 狀態(tài) 清理策略 金絲雀部署 編寫 Deployment 規(guī)約 一個 Deployment 為?Pod?和?ReplicaSet?提供聲明式的更新能力。 你負責(zé)描述 Deployment 中的? 目標狀態(tài) ,而 Deployment?控制器(Controller)?以受控速率更改實際狀態(tài),

    2024年02月14日
    瀏覽(18)
  • 【云原生】kubernetes控制器deployment的使用

    【云原生】kubernetes控制器deployment的使用

    ? ? 目錄 ?編輯 1 Controller 控制器 1.1 什么是 Controller 1.2 常見的 Controller 控制器 1.3 Controller 如何管理 Pod 2 Deployment 2.1 創(chuàng)建 deployment 2.2 查看 deployment 2.3 擴縮 deployment 2.4 回滾 deployment 2.5 刪除 deployment 1 Controller 控制器 官網(wǎng): 控制器 | Kubernetes 1.1 什么是 Controller Kubernetes 通常不會

    2024年02月13日
    瀏覽(32)
  • 【云原生|Kubernetes】13-Deployment資源控制器詳解

    kubernetes中有很多資源控制器,這些資源控制器我們只說一些重要且常用的。在介紹Deploymen之前,我們會逐個介紹這些控制器。 Pod控制器介紹 ? Pod控制器是用于實現(xiàn)管理pod的中間層,確保pod資源符合預(yù)期的狀態(tài),pod的資源出現(xiàn)故障時,會嘗試 進行重啟,當根據(jù)重啟策略無效

    2024年02月16日
    瀏覽(54)
  • Win11預(yù)覽體驗計劃顯示Your PC does not meet the minimum hardware requirements...的解決方案

    Win11預(yù)覽體驗計劃顯示Your PC does not meet the minimum hardware requirements...的解決方案

    某一天你心血來潮,打算參與Win11 預(yù)覽體驗計劃,但體驗計劃頁面卻顯示“Your PC does not meet the minimum hardware requirements for Windows11…”。 一種解決思路: 去以下網(wǎng)頁下載Offline Insider Enroll軟件,管理員權(quán)限運行后,選擇你想?yún)⑴c的體驗計劃通道。 Offline Insider Enroll https://github.

    2024年02月04日
    瀏覽(27)
  • 微信小程序報 does not have a method xxx 錯誤

    微信小程序報 does not have a method xxx 錯誤

    剛在做小程序的時候,跟著視頻操作,方法在js里面已經(jīng)定義過了,但運行時一直報錯? ? 在網(wǎng)上也找了一些方法,如果不是粗心的問題,總結(jié)了一下有以下兩點: 出現(xiàn)這個原因主要是調(diào)試基本庫的版本不一樣: 較新的版本:需要將方法放到method方法中,這有點像vue了,不

    2024年02月09日
    瀏覽(22)
  • git 提交時報錯 does not have a commit checked out

    git 提交時報錯 does not have a commit checked out

    出現(xiàn) does not have a commit checked out 的原因就是 在子文件中已經(jīng)被初始化過了 就是已經(jīng)使用 git init 了 ,這時你的文件夾里面就會出現(xiàn) .git 對的文件 如圖: 需要把隱藏文件打開 才能看到? ?mac 上你需要打開隱藏文件 快捷鍵 Command + Shift + . ?把 子文件中 的 .git 刪除 就可以繼續(xù)上

    2024年02月11日
    瀏覽(17)
  • 特殊的bug:element 0 of tensors does not require grad and does not have a grad_fn

    很多帖子都說了,設(shè)置requires_grad_()就行。 但是我這次遇到的不一樣,設(shè)置了都不行。 我是這種情況,在前面設(shè)置了 torch.no_grad(): ,又在這個的作用域下進行了 requires_grad_() ,這是不起作用的。 簡單版: 這樣子直接看,傻瓜都不會犯錯。而我這個就比較隱蔽了。。。 我的:

    2024年02月03日
    瀏覽(24)
  • 安卓開發(fā)報錯解決辦法does not have an ActionBar set via setSupportActionBar()

    做安卓應(yīng)用開發(fā)的時候遇到一個奇怪的報錯,搜遍了網(wǎng)上都沒有,報錯代碼如下,希望后面遇到此問題的人可以快速定位問題 問題鎖定在MainActivity中,后面發(fā)現(xiàn)注釋掉這句代碼就可以正常運行了 懷疑是此句代碼隱藏了標題欄導(dǎo)致與setSupportActionBar()發(fā)生了沖突?

    2024年02月17日
    瀏覽(26)
  • java.lang.IllegalArgumentException: Last unit does not have enough valid bits 異常的解決

    java.lang.IllegalArgumentException: Last unit does not have enough valid bits 異常的解決

    本文主要jwt出現(xiàn)的異常問題,如果有什么需要改進的地方還請大佬指出?? ??作者簡介:大家好,我是青衿?? ??博客首頁:CSDN主頁放風(fēng)講故事 ??每日一句:努力一點,優(yōu)秀一點 使用封裝好的 JwtUtil 的工具類時,自定義設(shè)置 秘鑰明文 ,啟動后報錯: 報錯信息: 報錯信

    2024年02月04日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包