在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述kube-proxy ipvs原理

jf_TEuU2tls ? 來源:浩道linux ? 2023-05-22 11:35 ? 次閱讀

1.簡述 kube-proxy ipvs 原理?

IPVS 在 Kubernetes1.11 中升級為 GA 穩定版。IPVS 則專門用于高性能負載均衡,并使用更高效的數據結構(Hash 表),允許幾乎無限的規模擴張,因此被 kube-proxy 采納為最新模式。

在 IPVS 模式下,使用 iptables 的擴展 ipset,而不是直接調用 iptables 來生成規則鏈。iptables 規則鏈是一個線性的數據結構,ipset 則引入了帶索引的數據結構,因此當規則很多時,也可以很高效地查找和匹配。

可以將 ipset 簡單理解為一個 IP(段)的集合,這個集合的內容可以是 IP 地址、IP 網段、端口等,iptables 可以直接添加規則對這個“可變的集合”進行操作,這樣做的好處在于可以大大減少 iptables 規則的數量,從而減少性能損耗。

2.簡述 kube-proxy ipvs 和 iptables 的異同?

iptables 與 IPVS 都是基于 Netfilter 實現的,但因為定位不同,二者有著本質的差別:iptables 是為防火墻而設計的;IPVS 則專門用于高性能負載均衡,并使用更高效的數據結構(Hash 表),允許幾乎無限的規模擴張。

與 iptables 相比,IPVS 擁有以下明顯優勢:

1、為大型集群提供了更好的可擴展性和性能;

2、支持比 iptables 更復雜的復制均衡算法(最小負載、最少連接、加權等);

3、支持服務器健康檢查和連接重試等功能;

4、可以動態修改 ipset 的集合,即使 iptables 的規則正在使用這個集合。

3.簡述 Kubernetes 中什么是靜態 Pod?

靜態 pod 是由 kubelet 進行管理的僅存在于特定 Node 的 Pod 上,他們不能通過 API Server 進行管理,無法與 ReplicationController、Deployment 或者DaemonSet 進行關聯,并且 kubelet 無法對他們進行健康檢查。靜態 Pod 總是由kubelet 進行創建,并且總是在 kubelet 所在的 Node 上運行。

4.簡述 Kubernetes 中 Pod 可能位于的狀態?

Pending:API Server 已經創建該 Pod,且 Pod 內還有一個或多個容器的鏡像沒有創建,包括正在下載鏡像的過程。

Running:Pod 內所有容器均已創建,且至少有一個容器處于運行狀態、正在啟動狀態或正在重啟狀態。

Succeeded:Pod 內所有容器均成功執行退出,且不會重啟。

FailedPod 內所有容器均已退出,但至少有一個容器退出為失敗狀態。

Unknown:由于某種原因無法獲取該 Pod 狀態,可能由于網絡通信不暢導致。

5.簡述 Kubernetes 創建一個 Pod 的主要流程?

Kubernetes 中創建一個 Pod 涉及多個組件之間聯動,主要流程如下:

1、客戶端提交 Pod 的配置信息(可以是 yaml 文件定義的信息)到 kube-apiserver。

2、Apiserver 收到指令后,通知給 controller-manager 創建一個資源對象。

3、Controller-manager 通過 api-server 將 pod 的配置信息存儲到 ETCD 數據中心中。

4、Kube-scheduler 檢測到 pod 信息會開始調度預選,會先過濾掉不符合 Pod資源配置要求的節點,然后開始調度調優,主要是挑選出更適合運行 pod 的節點,然后將 pod 的資源配置單發送到 node 節點上的 kubelet 組件上。

5、Kubelet 根據 scheduler 發來的資源配置單運行 pod,運行成功后,將 pod的運行信息返回給 scheduler,scheduler 將返回的 pod 運行狀況的信息存儲到etcd 數據中心。

6.簡述 Kubernetes 中 Pod 的重啟策略?

Pod 重啟策略(RestartPolicy)應用于 Pod 內的所有容器,并且僅在 Pod 所處的 Node 上由 kubelet 進行判斷和重啟操作。當某個容器異常退出或者健康檢查失敗時,kubelet 將根據 RestartPolicy 的設置來進行相應操作。

Pod 的重啟策略包括 Always、OnFailure 和 Never,默認值為 Always。

Always:當容器失效時,由 kubelet 自動重啟該容器;

OnFailure:當容器終止運行且退出碼不為 0 時,由 kubelet 自動重啟該容器;

Never:不論容器運行狀態如何,kubelet 都不會重啟該容器。

同時 Pod 的重啟策略與控制方式關聯,當前可用于管理 Pod 的控制器包括ReplicationController、Job、DaemonSet 及直接管理 kubelet 管理(靜態 Pod)。

不同控制器的重啟策略限制如下:

● RC 和 DaemonSet:必須設置為 Always,需要保證該容器持續運行;

● Job:OnFailure 或 Never,確保容器執行完成后不再重啟;

● kubelet:在 Pod 失效時重啟,不論將 RestartPolicy 設置為何值,也不會對 Pod 進行健康檢查。

7.簡述 Kubernetes 中 Pod 的健康檢查方式?

對 Pod 的健康檢查可以通過兩類探針來檢查:LivenessProbe 和ReadinessProbe。

LivenessProbe 探針:用于判斷容器是否存活(running 狀態),如果 LivenessProbe 探針探測到容器不健康,則 kubelet 將殺掉該容器,并根據容器的重啟策略做相應處理。若一個容器不包含 LivenessProbe 探針,kubelet 認為該容器的 LivenessProbe 探針返回值用于是“Success”。

ReadineeProbe 探針:用于判斷容器是否啟動完成(ready 狀態)。如果 ReadinessProbe 探針探測到失敗,則 Pod 的狀態將被修改。Endpoint Controller 將從 Service 的 Endpoint 中刪除包含該容器所在 Pod 的 Eenpoint。

startupProbe 探針:啟動檢查機制,應用一些啟動緩慢的業務,避免業務長時間啟動而被上面兩類探針 kill 掉。

8.簡述 Kubernetes Pod 的 LivenessProbe 探針的常見方式?

kubelet 定期執行 LivenessProbe 探針來診斷容器的健康狀態,通常有以下三種方式:

ExecAction:在容器內執行一個命令,若返回碼為 0,則表明容器健康。

TCPSocketAction:通過容器的 IP 地址和端口號執行 TCP 檢查,若能建立 TCP 連接,則表明容器健康。

HTTPGetAction:通過容器的 IP 地址、端口號及路徑調用 HTTP Get 方法,若響應的狀態碼大于等于 200 且小于 400,則表明容器健康。

9.簡述 Kubernetes Pod 的常見調度方式?

Kubernetes 中,Pod 通常是容器的載體,主要有如下常見調度方式:

●Deployment 或 RC:該調度策略主要功能就是自動部署一個容器應用的多份副本,以及持續監控副本的數量,在集群內始終維持用戶指定的副本數量。

NodeSelector:定向調度,當需要手動指定將 Pod 調度到特定 Node 上,可以通過 Node 的標簽(Label)和 Pod 的 nodeSelector 屬性相匹配。

NodeAffinity 親和性調度:親和性調度機制極大的擴展了 Pod 的調度能力,目前有兩種節點親和力表達:

requiredDuringSchedulingIgnoredDuringExecution:硬規則,必須滿足指定的規則,調度器才可以調度 Pod 至 Node 上(類似 nodeSelector,語法不同)。

preferredDuringSchedulingIgnoredDuringExecution:軟規則,優先調度至滿足的 Node 的節點,但不強求,多個優先級規則還可以設置權重值。

Taints 和 Tolerations(污點和容忍)

Taint:使 Node 拒絕特定 Pod 運行;

Toleration:為 Pod 的屬性,表示 Pod 能容忍(運行)標注了 Taint 的 Node。

10.簡述Kubernetes初始化容器(init container)?

init container 的運行方式與應用容器不同,它們必須先于應用容器執行完成,當設置了多個 init container 時,將按順序逐個運行,并且只有前一個 init container 運行成功后才能運行后一個 init container。當所有 init container 都成功運行后,Kubernetes 才會初始化 Pod 的各種信息,并開始創建和運行應用容器。

11.簡述 Kubernetes deployment 升級過程?

● 初始創建 Deployment 時,系統創建了一個 ReplicaSet,并按用戶的需求創建了對應數量的 Pod 副本。

●當更新 Deployment 時,系統創建了一個新的 ReplicaSet,并將其副本數量擴展到 1,然后將舊 ReplicaSet 縮減為 2。

●之后,系統繼續按照相同的更新策略對新舊兩個 ReplicaSet 進行逐個調整。

●最后,新的 ReplicaSet 運行了對應個新版本 Pod 副本,舊的 ReplicaSet 副本數量則縮減為 0。

12.簡述 Kubernetes deployment 升級策略?

在 Deployment 的定義中,可以通過 spec.strategy 指定 Pod 更新的策略,目前支持兩種策略:Recreate(重建)和 RollingUpdate(滾動更新),默認值為RollingUpdate。

Recreate:設置 spec.strategy.type=Recreate,表示 Deployment 在更新 Pod時,會先殺掉所有正在運行的 Pod,然后創建新的 Pod。

RollingUpdate:設置 spec.strategy.type=RollingUpdate,表示 Deployment會以滾動更新的方式來逐個更新 Pod。同時,可以通過設置spec.strategy.rollingUpdate 下的兩個參數(maxUnavailable 和 maxSurge)來控制滾動更新的過程。

13.簡述 Kubernetes DaemonSet 類型的資源特性?

DaemonSet 資源對象會在每個 Kubernetes 集群中的節點上運行,并且每個節點只能運行一個 pod,這是它和 deployment 資源對象的最大也是唯一的區別。因此, 在定義 yaml 文件中,不支持定義 replicas。

它的一般使用場景如下:

●在去做每個節點的日志收集工作。

●監控每個節點的的運行狀態。

14.簡述 Kubernetes 自動擴容機制?

Kubernetes 使用 Horizontal Pod Autoscaler(HPA)的控制器實現基于 CPU使用率進行自動 Pod 擴縮容的功能。HPA 控制器周期性地監測目標 Pod 的資源性能指標,并與 HPA 資源對象中的擴縮容條件進行對比,在滿足條件時對 Pod 副本數量進行調整。

●HPA 原理

Kubernetes 中的某個 Metrics Server(Heapster 或自定義 Metrics Server)持續采集所有 Pod 副本的指標數據。HPA 控制器通過 Metrics Server 的 API(Heapster 的API 或聚合 API)獲取這些數據,基于用戶定義的擴縮容規則進行計算,得到目標 Pod 副本數量。

當目標 Pod 副本數量與當前副本數量不同時,HPA 控制器就向 Pod 的副本控制器 (Deployment、RC 或 ReplicaSet)發起 scale 操作,調整 Pod 的副本數量,完成擴縮容操作。

15.簡述 Kubernetes Service 類型?

通過創建 Service,可以為一組具有相同功能的容器應用提供一個統一的入口地址, 并且將請求負載分發到后端的各個容器應用上。其主要類型有:

ClusterIP:虛擬的服務 IP 地址,該地址用于 Kubernetes 集群內部的 Pod 訪問, 在 Node 上 kube-proxy 通過設置的 iptables 規則進行轉發;

NodePort:使用宿主機的端口,使能夠訪問各 Node 的外部客戶端通過 Node 的 IP 地址和端口號就能訪問服務;

LoadBalancer:使用外接負載均衡器完成到服務的負載分發,需要在 spec.status.loadBalancer 字段指定外部負載均衡器的 IP 地址,通常用于公有云。

16.簡述 Kubernetes Service 分發后端的策略?

Service 負載分發的策略有:RoundRobin 和 SessionAffinity:

RoundRobin:默認為輪詢模式,即輪詢將請求轉發到后端的各個 Pod 上。

SessionAffinity:基于客戶端 IP 地址進行會話保持的模式,即第 1 次將某個客戶端發起的請求轉發到后端的某個 Pod 上,之后從相同的客戶端發起的請求都將被轉發到后端相同的 Pod 上。

17.簡述 Kubernetes Headless Service?

在某些應用場景中,若需要人為指定負載均衡器,不使用 Service 提供的默認負載均衡的功能,或者應用程序希望知道屬于同組服務的其他實例。Kubernetes 提供了Headless Service 來實現這種功能,即不為 Service 設置 ClusterIP(入口 IP 地址), 僅通過 Label Selector 將后端的 Pod 列表返回給調用的客戶端。

18.簡述 Kubernetes 外部如何訪問集群內的服務?

對于 Kubernetes,集群外的客戶端默認情況,無法通過 Pod 的 IP 地址或者 Service 的虛擬 IP 地址:虛擬端口號進行訪問。通常可以通過以下方式進行訪問 Kubernetes 集群內的服務:

映射 Pod 到物理機:將 Pod 端口號映射到宿主機,即在 Pod 中采用 hostPort 方式,以使客戶端應用能夠通過物理機訪問容器應用。

映射 Service 到物理機:將 Service 端口號映射到宿主機,即在 Service 中采用 nodePort 方式,以使客戶端應用能夠通過物理機訪問容器應用。

映射 Sercie 到 LoadBalancer:通過設置 LoadBalancer 映射到云服務商提供的 LoadBalancer 地址。這種用法僅用于在公有云服務提供商的云平臺上設置 Service 的場景。

19.簡述 Kubernetes ingress?

Kubernetes 的 Ingress 資源對象,用于將不同 URL 的訪問請求轉發到后端不同的 Service,以實現 HTTP 層的業務路由機制。

Kubernetes 使用了 Ingress 策略和 Ingress Controller,兩者結合并實現了一個完整的 Ingress 負載均衡器。使用 Ingress 進行負載分發時,Ingress Controller 基于Ingress 規則將客戶端請求直接轉發到 Service 對應的后端 Endpoint(Pod)上,從而跳過 kube-proxy 的轉發功能,kube-proxy 不再起作用,全過程為:ingress controller + ingress 規則 ----> services。

同時當 Ingress Controller 提供的是對外服務,則實際上實現的是邊緣路由器的功能。

20.簡述 Kubernetes 鏡像的下載策略?

K8s 的鏡像下載策略有三種:Always、Never、IFNotPresent。

Always:鏡像標簽為 latest 時,總是從指定的倉庫中獲取鏡像。

Never:禁止從倉庫中下載鏡像,也就是說只能使用本地鏡像。

IfNotPresent:僅當本地沒有對應鏡像時,才從目標倉庫中下載。默認的鏡像下載策略是:當鏡像標簽是 latest 時,默認策略是 Always;當鏡像標簽是自定義時(也就是標簽不是 latest),那么默認策略是 IfNotPresent。

21.簡述 Kubernetes 的負載均衡器?

負載均衡器是暴露服務的最常見和標準方式之一。

根據工作環境使用兩種類型的負載均衡器,即內部負載均衡器或外部負載均衡器。內部負載均衡器自動平衡負載并使用所需配置分配容器,而外部負載均衡器將流量從外部負載引導至后端容器。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4320

    瀏覽量

    85906
  • 容器
    +關注

    關注

    0

    文章

    495

    瀏覽量

    22069
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40147

原文標題:總結到位! 21道Kubernetes 面試題助你拿高薪!

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    阿里云容器服務通過LoadBalancer暴露IPv6服務

    的LoadBalancer來暴露我們的服務。使用方式:.創建容器服務的k8s集群,注意創建集群的 kube-proxy 代理模式需要是IPVS 2.創建LoadBalancer類型的Service,創建的模板
    發表于 09-16 17:20

    防火墻術語-Proxy

    防火墻術語-Proxy   英文原義:Proxy 中文釋義:代理 注  解:防火墻的一類。工作在應用層,特點是兩次連
    發表于 02-24 11:01 ?1011次閱讀

    eBPF技術應用云原生網絡實踐系列之基于socket的service

    。 iptables 代理模式kube-proxy 負責 list/watch,規則設置。IPtables 相關內核模塊負責轉發。 IPVS 代理模式kube-proxy 負責 list/watch,規則設置。
    的頭像 發表于 10-13 10:54 ?1831次閱讀
    eBPF技術應用云原生網絡實踐系列之基于socket的service

    php-proxy-app Web代理服務器

    php-proxy-app.zip
    發表于 04-29 10:51 ?1次下載
    php-<b class='flag-5'>proxy</b>-app Web代理服務器

    Tcp-DNS-proxy TCP DNS代理

    Tcp-DNS-proxy.zip
    發表于 04-29 10:44 ?2次下載
    Tcp-DNS-<b class='flag-5'>proxy</b> TCP DNS代理

    Exchange_proxy Exchange安全代理

    exchange_proxy.zip
    發表于 05-07 09:51 ?0次下載
    Exchange_<b class='flag-5'>proxy</b> Exchange安全代理

    kube-lineage Kubernetes集群資源展示CLI工具

    ./oschina_soft/kube-lineage.zip
    發表于 05-13 09:50 ?0次下載
    <b class='flag-5'>kube</b>-lineage Kubernetes集群資源展示CLI工具

    Kube-capacity CLI的安裝與用法

    使用 Kube-capacity CLI 查看 Kubernetes 資源請求、限制和利用率
    的頭像 發表于 07-03 15:30 ?1122次閱讀

    Kube Multisensor NodeMCU模塊板

    電子發燒友網站提供《Kube Multisensor NodeMCU模塊板.zip》資料免費下載
    發表于 07-18 16:37 ?0次下載
    <b class='flag-5'>Kube</b> Multisensor NodeMCU模塊板

    Service Mesh:探索分布式系統的幻覺與未來

    在 Kubernetes 中,流量管理由 Kubernetes 網絡代理(kube-proxy)負責。kube-proxy 在每個節點上運行,并與 Kubernetes API 服務器通信,獲取關于 Kubernetes 服務的信息。
    的頭像 發表于 08-02 16:00 ?514次閱讀
    Service Mesh:探索分布式系統的幻覺與未來

    K8s常見的10個問題排查

    K8S的集群狀態是排查故障的關鍵起點。使用kubectl get nodes命令來檢查節點狀態。如果有節點未能就緒或出現異常狀態,可能會對應用程序造成故障。確保基本組件,如etcd、kubelet和kube-proxy等,正常運行。
    發表于 11-01 12:26 ?1482次閱讀
    K8s常見的10個問題排查

    深入解析IPVS(IP虛擬服務器)

    IPVS是如何決策應該把請求調度到哪個后端RS(Real Server)上的呢?這是由負載均衡調度算法決定的。
    發表于 02-27 11:12 ?1200次閱讀
    深入解析<b class='flag-5'>IPVS</b>(IP虛擬服務器)

    深度解析Istio Proxy邊車容器的功能與能力

    在創建Pod的請求到達Kube-apiserver后,首先進行認證鑒權,然后在準入控制階段 kube-apiserver以REST的方式同步調用sidecar-injector webhook服務進行init容器與istio-proxy
    發表于 03-04 09:43 ?1620次閱讀
    深度解析Istio <b class='flag-5'>Proxy</b>邊車容器的功能與能力

    IPVS負載均衡原理解析

    ipvs (IP Virtual Server) 實現了傳輸層負載均衡,也就是我們常說的4層LAN交換,作為 Linux 內核的一部分。ipvs運行在主機上,在真實服務器集群前充當負載均衡器
    的頭像 發表于 10-24 17:34 ?231次閱讀

    重新分配pod節點

    kube-proxy; 由于apiserver被nginx代理,所以在升級的時候需要操作操作nginx注釋升級節點,避免帶來無法訪問的情況; 我們的master節點和node都是在同一個集群服務器上,所以一起進行操作; 3、確定節點升級順序 查看節
    的頭像 發表于 01-02 09:17 ?63次閱讀
    重新分配pod節點
    主站蜘蛛池模板: 欧美色图网站| 亚洲qingse中文字幕久久| 午夜视频在线观看国产| 国产亚洲欧美视频| 日韩一区二区在线观看| 日韩精品毛片| 人人看人人添人人爽| 欧美成人一区二区三区在线视频| 欧美日剧在线免费| 九九精品久久久久久噜噜| 色多多黄| 日本a级三级三级三级久久| 欧美艹逼视频| 国产亚洲精品激情都市| 一级福利视频| 日本最黄视频| 亚洲一级影院| 欧美黄一片| 性色xxx| 性瘾高h姚蕊全文免费阅读| 99久久精品免费观看国产| 性生大片一级毛片免费观看| 午夜天堂影院| 一级特黄性色生活片一区二区| 五月天丁香花婷婷| 在线高清国产| 四虎网址最新| 精品视频一区二区三区四区五区| 东莞a级毛片| 失禁h啪肉尿出来高h男男| 2019天天干| 欧美视频不卡一区二区三区| 亚洲最新| 亚洲精品456| 欧美午夜大片| 成年人黄色免费网站| 台湾久久| www.亚洲5555.com| 黄色网络在线观看| 欧美性受xxxx| 国产精品久久久久久久成人午夜|