Linux運維工程師面試題(9)

来源:https://www.cnblogs.com/waluna/archive/2023/09/08/17688445.html
-Advertisement-
Play Games

[toc] # Linux運維工程師面試題(9) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 pod 的生命周期 第一階段: - Pending:正在創建 Pod 但是 Pod ...


目錄

Linux運維工程師面試題(9)

祝各位小伙伴們早日找到自己心儀的工作。
持續學習才不會被淘汰。
地球不爆炸,我們不放假。
機會總是留給有有準備的人的。
加油,打工人!

1 pod 的生命周期

第一階段:

  • Pending:正在創建 Pod 但是 Pod 中的容器還沒有全部被創建完成,處於此狀態的 Pod 應該檢查 Pod 依賴的存儲是否有許可權掛載、鏡像是否可以下載、調度是否正常等。
  • Failed:Pod 中有容器啟動失敗而導致 pod 工作異常。
  • Unknown:由於某種原因無法獲得 pod 的當前狀態,通常是由於與 pod 所在的 node 節點通信錯誤。
  • Succeeded:Pod 中的所有容器都被成功終止即 pod 里所有的 containers 均已 terminated。

第二階段:

  • Unschedulable:Pod不能被調度,kube-scheduler 沒有匹配到合適的node節點
    • CPU資源不夠,記憶體資源不夠
    • 打 labels 標簽
  • PodScheduled:pod 正處於調度中,在 kube-scheduler 剛開始調度的時候,還沒有將 pod 分配到指定node,在篩選出合適的節點後就會更新 etcd 數據,將 pod 分配到指定的 node
  • Initialized:所有 pod 中的初始化容器已經完成了
  • ImagePullBackOff:Pod 所在的 node 節點下載鏡像失敗
    • node 節點無法下載鏡像
    • 網路問題
    • 許可權問題
    • 鏡像地址或者名稱寫錯
  • Running:Pod 內部的容器已經被創建並且啟動
  • Ready:表示 pod 中的容器已經可以提供訪問服務

2 探針類型

  • livenessProbe:存活探針,檢測容器是否正在運行,如果存活探測失敗,則 kubelet 會殺死容器,並且容器將受到其重啟策略的影響,如果容器不提供存活探針,則預設狀態為 Success,livenessProbe 用戶控制是否重啟 pod。
  • readinessProbe:就緒探針,如果就緒探測失敗,端點控制器將從與 Pod 匹配的所有 Service 的端點中刪除該 Pod 的 IP 地址,初始延遲之前的就緒狀態預設為 Failure,如果容器不提供就緒探針,則預設狀態為 Success,readinessProbe 用於控制 pod 是否添加至 service。

livenessProbe 和 readinessProbe 的對比

配置參數一樣

livenessProbe:連續探測失敗會重啟、重建 pod,readinessProbe 不會執行重啟或者重建Pod操作

livenessProbe:連續檢測指定次數失敗後會將容器置於 (Crash Loop BackOff) 切不可用,readinessProbe 不會

readinessProbe:連續探測失敗會從 service 的 endpointd 中刪除該 Pod,livenessProbe 不具備此功能,但是會將容器掛起 livenessProbe

livenessProbe 用戶控制是否重啟 pod,readinessProbe 用於控制 pod 是否添加至 service

3 探針方式

  • ExecAction: 在容器內執行指定命令。如果命令退出時返回碼為 0 則認為診斷成功。
  • TCPSocketAction: 對容器的 IP 地址上的指定埠執行 TCP 檢查。如果埠打開,則診斷被認為是成功的。
  • HTTPGetAction: 對容器的 IP 地址上指定埠和路徑執行 HTTP Get 請求。如果響應的狀態碼大於等於 200 且小於 400,則診斷被認為是成功的。

4 探針結果

  • Success (成功):容器通過了診斷。
  • Failure (失敗):容器未通過診斷。
  • Unknown (未知):診斷失敗,因此不會採取任何行動。

5 Pod 重啟策略

restartPolicy:

  • Always:當容器異常時,k8s 自動重啟該容器,ReplicationController/Replicaset/Deployment。
  • OnFailure:當容器失敗時 (容器停止運行且退出碼不為0),k8s 自動重啟該容器。
  • Never:不論容器運行狀態如何都不會重啟該容器,Job 或 CronJob。

6 鏡像獲取策略

imagePullPolicy:

  • Always:每次啟動Pod時都要從指定的倉庫下載鏡像。
  • IfNotPresent:僅本地鏡像缺失時才從目標倉庫下載鏡像。
  • Never:禁止從倉庫下載鏡像,僅使用本地鏡像。

對於標簽為 latest 的鏡像文件,其預設的鏡像獲取策略為Always;

其他標簽的鏡像,預設策略則為IfNotPresent。

7 k8s 的服務類型

  • ClusterIP:通過集群的內部 IP 暴露服務,選擇該值時服務只能夠在集群內部訪問。 這也是你沒有為服務顯式指定 type 時使用的預設值。 你可以使用 Ingress 或者 Gateway API 向公眾暴露服務。
  • NodePort:通過每個節點上的 IP 和靜態埠(NodePort)暴露服務。 為了讓節點埠可用,Kubernetes 設置了集群 IP 地址,這等同於你請求 type: ClusterIP 的服務。
  • LoadBalancer:使用雲提供商的負載均衡器向外部暴露服務。 外部負載均衡器可以將流量路由到自動創建的 NodePort 服務和 ClusterIP 服務上。
  • ExternalName:通過返回 CNAME 記錄和對應值,可以將服務映射到 externalName 欄位的內容(例如,foo.bar.example.com)。 無需創建任何類型代理。

8 k8s中 service 和 ingress 的區別

service 只能通過四層負載就是ip+埠的形式來暴露

ingress 可以提供7層的負責對外暴露介面,而且可以調度不同的業務域,不同的url訪問路徑的業務流量。

9 有狀態和無狀態服務的區別

http請求無狀態,多次請求之間沒有依賴關係

有狀態就是多次訪問之間有關聯關係,需要記錄多次之間的訪問關係

10 k8s 中 service 是做什麼的?

主要是做動態的發現後端主機的endpoint並提供負載均衡的一個入口。


關於我
全網可搜《阿賢Linux》
CSDN、知乎、嗶哩嗶哩、博客園、51CTO、掘金、思否、開源中國、阿裡雲、騰訊雲、華為雲、今日頭條、百家號、GitHub、個人博客
公眾號:阿賢Linux
個人博客:blog.waluna.top
https://blog.waluna.top/


原文鏈接: Linux運維工程師面試題(9).


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Matplotlib 中的圖例是幫助觀察者理解圖像數據的重要工具。圖例通常包含在圖像中,用於解釋不同的顏色、形狀、標簽和其他元素。 # 1. 主要參數 當不設置圖例的參數時,預設的圖例是這樣的。 ```python import numpy as np import matplotlib.pyplo ...
  • > 關註微信公眾號【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿裡雲認證的資深架構師,項目管理專業人士,上億營收AI產品研發負責人。 > 本文深入探討了 Go 語言的內 ...
  • 我們來看看如何通過幾個步驟快速的實現一個功能相對齊全的CLI程式。和做飯一樣,能夠快速獲得成就感的方式是找半成品直接下鍋炒一盤 ...
  • 重定位表(Relocation Table)是Windows PE可執行文件中的一部分,主要記錄了與地址相關的信息,它在程式載入和運行時被用來修改程式代碼中的地址的值,因為程式在不同的記憶體地址中載入時,程式中使用到的地址也會受到影響,因此需要重定位表這個數據結構來完成這些地址值的修正。當程式需要被加... ...
  • 本教程適用於idea所有版本,並支持目前最新的2023.2.1版本。直接激活到2099年,支持windows、mac、linux。本文先講windows,mac和linux的跟win的激活方式大差不差。如果已經有了idea,想激活到2099的直接看步驟5 1.先去idea官網下載,官網下載地址:ht ...
  • 支持.Net Core(2.0及以上)與.Net Framework(4.5及以上) 可以部署在Docker, Windows, Linux, Mac。 分散式唯一Id,顧名思義,是指在全世界任何一臺電腦上都不會重覆的唯一Id。 在單機/單伺服器/單資料庫的小型應用中,不需要用到這類東西。但在高並 ...
  • # 前言 ### 在上一篇文章[【基於ASP.NET ZERO,開發SaaS版供應鏈管理系統】](https://www.cnblogs.com/freedyang/p/17679280.html)中有提到對Webhook功能的擴展改造,本文詳細介紹一下具體過程。 ### Webhook功能操作說明 ...
  • 一說tp大多數人想到的是PHP使用tp,但今天不說PHP 說說c#使用tp 由於tp比較久遠 網上的資料又是少之又少 接下來說說tp的一些基本用法 1.首先就是數據綁定了 <%tp:foreach collection="{$model.Items}" var="m"%> <td>{$m.name} ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...