1. 程式人生 > >kubernetes DaemonSet資源物件

kubernetes DaemonSet資源物件

What is a DaemonSet?

DaemonSet能夠讓所有(或者一些特定)的Node節點運行同一個pod。當節點加入到kubernetes叢集中,pod會被(DaemonSet)排程到該節點上執行,當節點從kubernetes叢集中被移除,被(DaemonSet)排程的pod會被移除,如果刪除DaemonSet,所有跟這個DaemonSet相關的pods都會被刪除。在使用kubernetes來執行應用時,很多時候我們需要在一個區域(zone)或者所有Node上運行同一個守護程序(pod),例如如下場景:每個Node上執行一個分散式儲存的守護程序,例如glusterd,ceph每個Node上執行日誌採集器,例如fluentd,logstash

每個Node上執行監控的採集端,例如Prometheus Node Exporter, collectd在簡單的情況下,一個DaemonSet可以覆蓋所有的Node,來實現Only-One-Pod-Per-Node這種情形;在有的情況下,我們對不同的計算節點進行標記,或者把kubernetes的叢集節點分為多個zone,DaemonSet也可以在每個zone上實現Only-One-Pod-Per-Node。

Writing a DaemonSet Spec

Required Fields(必須欄位)

apiVersion, kind, metadata.spec

Pod Template

.spec.template

.spec欄位的必須欄位,即是pod template. 除了當巢狀的時候不需要 apiVersionkind欄位,其他跟pod模板完全一樣。

同時RestartPolicy 只能設定為 Always, 不指定,預設為 Always.

Pod Selector

spec.selector 支援兩種匹配:

  • matchLabels

  • matchExpressions

當兩種匹配方式都配置的時候,匹配結果為交集.

Running Pods on Only Some Nodes

當指定.spec.template.spec.nodeSelector, DaemonSet controller 將會在

nodeSelector匹配的節點上建立pod。同樣當你指定 .spec.template.spec.affinity 後, DaemonSet controller 會在 node affinity匹配的節點上建立pod。如果都沒有指定,DaemonSet controller 在所有node節點上建立pod.

How Daemon Pods are Scheduled

被DaemonSet controller建立的pod會預設指定.spec.nodeName,所以pod會被k8s的排程器忽略. 所以:

  • unschedulable 欄位不會被 DaemonSet controller識別。

  • 當k8s的排程器沒有啟動的時候,DaemonSet controller也能工作。

Communicating with Daemon Pods

跟DaemonSet建立的pod通訊方法:

  • Push: DaemonSet建立的pod被配置成更新配置到其他服務,它們不需要客戶端。

  • NodeIP and Known Port: DaemonSet 建立的pod使用 hostPort, 所以通過node IP就可以通訊。

  • DNS:

  • Service:

Updating a DaemonSet

如果node labels 改變, DaemonSet 會迅速新增pod到新匹配的node,刪除不再匹配節點上的pod。

你可以修改DaemonSet建立的pod. 然而,不是所有的欄位都可以修改 。同時DaemonSet controller仍然使用之前的模板當新增加節點的時候。

刪除 DaemonSet時,如果kubectl指定--cascade=false, 建立的pods 會保留在node節點上. 你可以用不同的模板建立新的DaemonSet。新建立的DaemonSet通過相同的標籤會識別之前的pod,DaemonSet不會修改或者刪除之前建立的pod, 你可以手動刪除之前的pod來使DaemonSet自動建立新的pod。

Kubernetes 1.6版本及以後, DaemonSet支援滾動升級。

Alternatives to DaemonSet

Init Scripts

Bare Pods

Static Pods

靜態pods不會被 kubectl 或者其他 Kubernetes API 客戶端所管理. 因為靜態pod不依賴於 apiserver。

Replication Controller

相關推薦

kubernetes DaemonSet資源物件

What is a DaemonSet? DaemonSet能夠讓所有(或者一些特定)的Node節點運行同一個pod。當節點加入到kubernetes叢集中,pod會被(DaemonSet)排程到該節點上執行,當節點從kubernetes叢集中被移除,被(DaemonS

kubernetes建立資源物件

1.建立deployment資源物件 # cat nginx-deployment.yml apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec:

kubernetes建立資源物件yaml檔案例子--pod

kubernetes建立pod的yaml檔案,引數說明 apiVersion: v1 #指定api版本,此值必須在kubectl apiversion中 kind: Pod #指定建立資源的

如何擴充套件Kubernetes管理的資源物件

Kubernetes是一套容器化解決方案,也是一套資源管理的架構和標準;本次分享是基於我在餓了麼現階段容器化經驗和理念的總結,探討深化Kubernetes在企業內部的應用的方法,介紹如何利用開源的API Server框架在企業內部打造和擴充套件Kubernetes管理的資源物件。 Kubernet

kubernetes資源物件--deployment

本文基於kubernetes 1.5.2版本編寫 概念 Deployment(中文意思為部署、排程)提供了一種更加簡單的更新RC和Pod的機制,K8S版本1.2實現的。通過在Deployment中描述所期望的叢集狀態,Deployment Controller會將現在的叢集狀態在一個可控的速度下逐步更新成

kubernetes資源物件ConfigMap學習(一)

生產環境中很多應用程式的配置可能需要通過配置檔案,命令列引數和環境變數的組合配置來完成。這些配置應該從image中解耦,以此來保持容器化應用程式的可移植性。在K8S1.2後引入ConfigMap來處理這種型別的配置資料。ConfigMap API資源提供了將配置資料注入容器的

kubernetes資源物件kind

PetSet首次在K8S1.4版本中,在1.5更名為StatefulSet。除了改了名字之外,這一API物件並沒有太大變化。注意:以下內容的驗證環境為CentOS7、K8S版本1.5.2,並部署SkyDNS。http://blog.csdn.net/liyingke112/a

kubernetes資源物件--Label

本文基於kubernetes 1.5.2版本編寫 概念 Label機制是K8S中一個重要設計,通過Label進行物件弱關聯,靈活地分類和選擇不同服務或業務,讓使用者根據自己特定的組織結構以鬆耦合

kubernetes federation 工作機制之資源物件同步

01 前言希望通過本文最簡單的方式向熟悉k8s的人說明白其上的federation是幹什麼的,如何工作的。關於federation,比較官方的說法是:叢集聯邦可以讓租戶/企業根據需要擴充套件或伸縮所需要的叢集;可以讓租戶/企業在跨地區甚至跨地域的多個叢集上部署、排程、監測管理應用。通過叢集聯邦,租戶/企業可以

kubernetes--優雅刪除資源物件

本文基於kubernetes 1.5.2版本編寫 當用戶請求刪除含有pod的資源物件時(如RC、deployment等),K8S為了讓應用程式優雅關閉(即讓應用程式完成正在處理的請求後,再關閉

kubernetes資源物件--Horizontal Pod Autoscaling(HPA)

下文基於kubernetes 1.5.2版本編寫 概念 HPA全稱Horizontal Pod Autoscaling,即pod的水平自動擴充套件。自動擴充套件主要分為兩種,其一為水平擴充套件,針對於例項數目的增減;其二為垂直擴充套件,即單個例項可以使用的資源的增減。HPA屬於前者。 HPA的操作物件是

kubernetes資源物件--pod和job

pod Pod是K8S的最小操作單元,一個Pod可以由一個或多個容器組成; 整個K8S系統都是圍繞著Pod展開的,比如如何部署執行Pod、如何保證Pod的數量、如何訪問Pod等。 特點 Pod是能夠被建立、排程和管理的最小單元; 每個Pod都有一個獨立的IP; 一個Pod由一個或多個容器構成,並共

Kubernetes 資源物件

[TOC] >在k8s中所有的物件都叫做資源,例如:pod,service等 #Pod 資源 pod是在k8s中最小單元,前面有提到,k8s支援自愈,彈性擴容等高階特性,那麼如果單純的在k8s節點中跑業務docker是沒有辦法支援這些高階特性,必須要有定製化的容器,那麼,pod就是這個官方已經定製化好的支

Kubernetes叢集資源監控

Kubernetes監控指標 叢集監控• 節點資源利用率• 節點數• 執行Pods Pod監控• Kubernetes指標(pod) DESIRED:預期的狀態CURRENT:當前的狀態UP-TO-DATE:更新後的狀態AVAILABLE:可以用的狀態 • 容器指標(cpu,mem)• 應用程式 K

Kubernetes 針對資源緊缺處理方式的配置_Kubernetes中文社群

如何在資源緊缺的情況下,保證 Node 的穩定性,是 Kubelet 需要面對的一個重要的問題。尤其對於記憶體和磁碟這種不可壓縮的資源,緊缺就相當於不穩定。 驅逐策略 Kubelet 能夠監控資源消耗,來防止計算資源被耗盡。一旦出現資源緊缺的跡象,Kubelet 就會主動終止一或多個 Pod

Kubernetes 叢集資源的那些事_Kubernetes中文社群

大多數時候,我們在跟 K8S 玩耍的時候,主要目的就是:“把 XXX 打個映象,在叢集上跑起來 ——— 誒快看,真的跑起來了嘿!”。 Kubernetes 和 Docker 的預設配置,就能夠幫我們省卻很多麻煩。不過大家都很清楚,資源問題是無法迴避的,我們在傳統 IT 環境下遇到的各種資源相關

k8s1.11命令列——實現原始碼導讀之kubectl patch更新資源物件

這一講我們來看kubectl patch更新資源物件命令,它的實現在NewCmdPatch方法中 獲取PatchOptions中儲存的命令列輸入的kubectl patch 後面跟的引數(如--all-namespace,--output,--patch等) 構建cmd

kubernetes-核心資源之Ingress

1、Ingress 在Kubernetes中,服務和Pod的IP地址僅可以在叢集網路內部使用,對於叢集外的應用是不可見的。為了使外部的應用能夠訪問叢集內的服務,在Kubernetes中可以通過NodePort和LoadBalancer這兩種型別的服務,或者使用Ingress。 插曲--------------

kubernetes DaemonSet的滾動更新

DaemonSet的滾動更新 DaemonSet 更新策略 DaemonSet 有兩種更新策略 : OnDelete: 預設的向後相容更新策略. 只有當你手動刪除老的DaemonSet pods

Kubernetes刪除資源後持續terminating狀態

net tor creat sop resource ont 狀態 grace yam Error from server (Forbidden): error when creating "/root/istio.yaml": configmaps &