摘要:但是可惜的是,當(dāng)中的塊存儲(chǔ)并不支持這樣的方式。都是監(jiān)聽指定資源,然后分別對(duì)和和三種事件,做出處理。部署具體部署的如下注意,加入集群中不存在角色,可以自行進(jìn)行授權(quán)。例如創(chuàng)建成果以后,去的查看如下
前言
在使用aws的托管k8s--eks過程中,避免不了使用aws的LB和塊存儲(chǔ)。AWS公有云所有的資源都可以自定義tags,這樣的好處就是可以根據(jù)tag具體含義來對(duì)資源進(jìn)行不同維度的審計(jì)和統(tǒng)計(jì)。比如按照部門,按照項(xiàng)目,環(huán)境(test,prod,uat)等維度。在設(shè)置service的類型為Loadbanlance的時(shí)候,可以通過以下annotations來自定義tag。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb # service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "sgt:env=prod,sgt:group=SGT,sgt:project=hawkeye" labels: app: prometheus-server name: prometheus-server namespace: kube-system spec: ports: - name: http port: 9090 protocol: TCP targetPort: 9090 selector: app: prometheus-server type: LoadBalancer
但是可惜的是,k8s當(dāng)中的塊存儲(chǔ)(ebs
)并不支持這樣的方式??赡躠ws覺得存儲(chǔ)比較便宜,不值得進(jìn)行審計(jì)吧。但是本身ebs是支持打tag的。
所以為了滿足我們司在k8s落地過程中對(duì)存儲(chǔ)的審計(jì),設(shè)計(jì)了add-ebs-tags-controller這個(gè)組件。
add-ebs-tags-controller 詳解 設(shè)計(jì)思路大家都知道k8s中對(duì)于存儲(chǔ)是通過pv和pvc來實(shí)現(xiàn)的。因而add-ebs-tags-controller監(jiān)聽所有新建的pvc,然后獲取到新建pvc的annotations(volume.beta.kubernetes.io/aws-block-storage-additional-resource-tags),最后調(diào)用aws的接口sdk,完成打tag的工作。
代碼實(shí)現(xiàn)具體代碼參見 github。
代碼相對(duì)比較簡單,大家可以自行研究??傮w實(shí)現(xiàn)思路和其他的controller類似。都是監(jiān)聽指定資源,然后分別對(duì)Update和add和delete三種事件,做出處理。
當(dāng)然這里不得不提一下,k8s controller設(shè)計(jì)的核心理念,controller通過監(jiān)聽實(shí)際的狀態(tài)(status) ,不斷做出具體調(diào)整,向期望的狀態(tài)(spec) 靠輪。
部署具體部署的yaml如下:
apiVersion: apps/v1 kind: Deployment metadata: name: add-ebs-tags-controller namespace: kube-system spec: replicas: 1 selector: matchLabels: k8s-app: add-ebs-tags-controller task: tool template: metadata: labels: task: tool k8s-app: add-ebs-tags-controller annotations: scheduler.alpha.kubernetes.io/critical-pod: "" spec: serviceAccount: cluster-admin containers: - name: add-ebs-tags-controller image: iyacontrol/add-ebs-tags-controller:0.0.1 imagePullPolicy: IfNotPresent
注意serviceAccount: cluster-admin,加入集群中不存在admin角色,可以自行進(jìn)行rbac授權(quán)。
demo例如:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: prometheus-claim namespace: kube-system annotations: volume.beta.kubernetes.io/aws-block-storage-additional-resource-tags: "sgt:env=prod,sgt:group=SGT,sgt:project=hawkeye" spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi
創(chuàng)建成果以后,去aws的ui查看如下:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/33166.html
摘要:自定義鏡像部分自定義鏡像部分安裝工具安裝工具工具官方下載工具解壓工具到查看版本初始化目錄結(jié)構(gòu)初始化目錄結(jié)構(gòu)筆者是在目錄下開始操作的,提前說下免得讀者操作有誤。修改修改腳本只作啟動(dòng)功能,為了方便傳調(diào)優(yōu)參數(shù),定制了環(huán)境變量供使用。 本文目標(biāo) 由于 OpenShift 官方提供的鏡像與模板(OpenJDK8)不完全滿足業(yè)務(wù)需要: 不包含飛行記錄功能。只有 OpenJD...
摘要:環(huán)境部署第一步,我會(huì)按默認(rèn)的向?qū)?chuàng)建一個(gè)新的虛擬私有云,這個(gè)虛擬私有云是為準(zhǔn)備的。的應(yīng)用程序?qū)⒆约涸趦?nèi)運(yùn)行。所有的主機(jī)都可以使用公有的,可如果你是在虛擬私有云上有主機(jī)的話,這就有點(diǎn)麻煩了,所以你可以選擇使用私有而非公有。 眾所周知,亞馬遜有EC2容器服務(wù),它是亞馬遜用于運(yùn)行Docker容器的解決方案。不過我覺得EC2容器服務(wù)不怎么好用,所以現(xiàn)在我要在AWS上測(cè)試Rancher和Kube...
摘要:環(huán)境部署第一步,我會(huì)按默認(rèn)的向?qū)?chuàng)建一個(gè)新的虛擬私有云,這個(gè)虛擬私有云是為準(zhǔn)備的。的應(yīng)用程序?qū)⒆约涸趦?nèi)運(yùn)行。所有的主機(jī)都可以使用公有的,可如果你是在虛擬私有云上有主機(jī)的話,這就有點(diǎn)麻煩了,所以你可以選擇使用私有而非公有。 眾所周知,亞馬遜有EC2容器服務(wù),它是亞馬遜用于運(yùn)行Docker容器的解決方案。不過我覺得EC2容器服務(wù)不怎么好用,所以現(xiàn)在我要在AWS上測(cè)試Rancher和Kube...
摘要:前言在資源審計(jì)和計(jì)費(fèi)這塊,容器和虛機(jī)有很大區(qū)別。支持諸多輸出,稱為。所以本文主要講如何為增加。實(shí)際上,基于增加并且更改,也可以做到,只不過需要裝一些包指令,結(jié)果就是鏡像變大。實(shí)際運(yùn)行日志截圖由于的出色的寫入性能,運(yùn)行非常穩(wěn)定。 前言 在k8s資源審計(jì)和計(jì)費(fèi)這塊,容器和虛機(jī)有很大區(qū)別。相對(duì)虛機(jī)來講,容器不容易實(shí)現(xiàn)。資源指標(biāo)收集可以采用heapster,也可以用prometheus。之前文...
閱讀 1763·2021-09-22 15:25
閱讀 1319·2019-08-29 12:34
閱讀 1927·2019-08-26 13:57
閱讀 3205·2019-08-26 10:48
閱讀 1457·2019-08-26 10:45
閱讀 806·2019-08-23 18:23
閱讀 749·2019-08-23 18:01
閱讀 1961·2019-08-23 16:07