成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Kubernetes其他運維經(jīng)驗

IT那活兒 / 1890人閱讀
Kubernetes其他運維經(jīng)驗

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!



PART1

Kubernetes核心技術(shù)Pod


1.1 Pod概述

Pod 是 k8s 系統(tǒng)中可以創(chuàng)建和管理的最小單元,是資源對象模型中由用戶創(chuàng)建或部署的最小資源對象模型,也是在 k8s 上運行容器化應(yīng)用的資源對象,其他的資源對象都是用來支撐或者擴展 Pod 對象功能的,比如控制器對象是用來管控 Pod 對象的,Service 或者Ingress 資源對象是用來暴露 Pod 引用對象的,PersistentVolume 資源對象是用來為 Pod提供存儲等等,k8s 不會直接處理容器,而是 Pod,Pod 是由一個或多個 container 組成Pod 是 Kubernetes 的最重要概念,每一個 Pod 都有一個特殊的被稱為”根容器“的 Pause容器。
Pause 容器對應(yīng)的鏡 像屬于 Kubernetes 平臺的一部分,除了 Pause 容器,每個 Pod還包含一個或多個緊密相關(guān)的用戶業(yè)務(wù)容器。
1)Pod vs 應(yīng)用
每個 Pod 都是應(yīng)用的一個實例,有專用的 IP。
2)Pod vs 容器
一個 Pod 可以有多個容器,彼此間共享網(wǎng)絡(luò)和存儲資源,每個 Pod 中有一個 Pause 容器保存所有的容器狀態(tài), 通過管理 pause 容器,達(dá)到管理 pod 中所有容器的效果。
3)Pod vs 節(jié)點
同一個 Pod 中的容器總會被調(diào)度到相同 Node 節(jié)點,不同節(jié)點間 Pod 的通信基于虛擬二層網(wǎng)絡(luò)技術(shù)實現(xiàn)。
4)Pod vs Pod
普通的 Pod 和靜態(tài) Pod。

1.2 Pod 特性

1)資源共享
一個 Pod 里的多個容器可以共享存儲和網(wǎng)絡(luò),可以看作一個邏輯的主機。共享的如namespace,cgroups 或者其他的隔離資源。
多個容器共享同一 network namespace,由此在一個 Pod 里的多個容器共享 Pod 的 IP和端口 namespace,所以一個 Pod 內(nèi)的多個容器之間可以通過 localhost 來進(jìn)行通信,所需要注意的是不同容器要注意不要有端口沖突即可。不同的 Pod 有不同的 IP,不同 Pod 內(nèi)的多個容器之前通信,不可以使用 IPC(如果沒有特殊指定的話)通信,通常情況下使用 Pod的 IP 進(jìn)行通信。一個 Pod 里的多個容器可以共享存儲卷,這個存儲卷會被定義為 Pod 的一部分,并且可以掛載到該 Pod 里的所有容器的文件系統(tǒng)上。
2)生命周期短暫
Pod 屬于生命周期比較短暫的組件,比如,當(dāng) Pod 所在節(jié)點發(fā)生故障,那么該節(jié)點上的 Pod會被調(diào)度到其他節(jié)點,但需要注意的是,被重新調(diào)度的 Pod 是一個全新的 Pod,跟之前的Pod 沒有半毛錢關(guān)系。
3)平坦的網(wǎng)絡(luò)
K8s 集群中的所有 Pod 都在同一個共享網(wǎng)絡(luò)地址空間中,也就是說每個 Pod 都可以通過其他Pod的IP地址來實現(xiàn)訪問。

1.3 Pod 定義

下面是 yaml 文件定義的 Pod 的完整內(nèi)容:
apiVersion: v1
kind: Pod
metadata:
//元數(shù)據(jù)
name: string
namespace: string
labels:
-name: string
annotations:
-name: string
spec:
containers:
//pod 中的容器列表,可以有多個容器
- name: string
//容器的名稱
image: string //容器中的鏡像
imagesPullPolicy: [Always|Never|IfNotPresent]//獲取鏡像的策略,默認(rèn)值為Always,每次都嘗試重新下載鏡像
command: [string]
//容器的啟動命令列表(不配置的話使用鏡像內(nèi)部的命令) args:
[string]
//啟動參數(shù)列表
workingDir: string
//容器的工作目錄 volumeMounts:
//掛載到到容器內(nèi)部的存儲卷設(shè)置
-name: string
mountPath: string
//存儲卷在容器內(nèi)部 Mount 的絕對路徑 readOnly: boolean
//
默認(rèn)值為讀寫
ports: //容器需要暴露的端口號列表
-name: string
containerPort: int //容器要暴露的端口
hostPort: int //容器所在主機監(jiān)聽的端口(容器暴露端口映射到宿主機的端口,設(shè)置hostPort 時同一臺宿主機將不能再啟動該容器的第 2 份副本)
protocol: string
//TCP 和 UDP,默認(rèn)值為 TCP env:
//容器運行前要設(shè)置的環(huán)境列表
-name: string value: string
resources:
limits:
//資源限制,容器的最大可用資源數(shù)量 cpu: Srting
memory: string
requeste:
//資源限制,容器啟動的初始可用資源數(shù)量 cpu: string
memory: string
livenessProbe:
//pod 內(nèi)容器健康檢查的設(shè)置 exec:
command: [string] //exec 方式需要指定的命令或腳本 httpGet:
//通過 httpget 檢查健康
path: string port: number host: string scheme: Srtring httpHeaders:
- name: Stirng value: string
tcpSocket:
//通過 tcpSocket 檢查健康
port: number initialDelaySeconds: 0//首次檢查時間 timeoutSeconds: 0
//檢查超時時間
periodSeconds: 0
//檢查間隔時間
successThreshold: 0
failureThreshold: 0 securityContext:
//安全配置
privileged: falae
restartPolicy: [Always|Never|OnFailure]//重啟策略,默認(rèn)值為 Always
nodeSelector: object //節(jié)點選擇,表示將該 Pod 調(diào)度到包含這些 label 的 Node 上,以key:value 格式指定
imagePullSecrets:
-name: string
hostNetwork: false
//是否使用主機網(wǎng)絡(luò)模式,棄用 Docker 網(wǎng)橋,默認(rèn)否
volumes: //在該 pod 上定義共享存儲卷列表
-name: string emptyDir: {} hostPath:
path: string secret:
secretName: string item:
-key: string path: string
configMap: name: string items:
-key: string

path: string

1.4 Pod 的基本使用方法

在 kubernetes 中對運行容器的要求為:容器的主程序需要一直在前臺運行,而不是后臺運行。應(yīng)用需要改造成前臺運行的方式。如果我們創(chuàng)建的 Docker 鏡像的啟動命令是后臺執(zhí)行程序,則在 kubelet 創(chuàng)建包含這個容器的 pod 之 后運行完該命令,即認(rèn)為 Pod 已經(jīng)結(jié)束,將立刻銷毀該 Pod。如果為該 Pod 定義了 RC,則創(chuàng)建、銷毀會陷入一個無 限循環(huán)的過程中。
Pod 可以由 1 個或多個容器組合而成。
1)一個容器組成的 Pod 的 yaml 示例
# 一個容器組成的 Pod:
apiVersion: v1 kind: Pod metadata:
name: mytomcat labels:
name: mytomcat spec:
containers:
- name: mytomcat image: tomcat ports:
- containerPort: 8000
2)多個容器組成的 Pod 的 yaml 示例
#兩個緊密耦合的容器:
apiVersion: v1 kind: Pod metadata:
name: myweb labels:
name: tomcat-redis
spec:
containers:
-name: tomcat image: tomcat ports:
-containerPort: 8080
-name: redis image: redis ports:
-containerPort: 6379


3)創(chuàng)建

4)查看
5)刪除

1.5 Pod 的分類

Pod 有兩種類型:
1)普通 Pod
普通 Pod 一旦被創(chuàng)建,就會被放入到 etcd 中存儲,隨后會被 Kubernetes Master 調(diào)度到某個具體的 Node 上并進(jìn)行綁定,隨后該 Pod 對應(yīng)的 Node 上的 kubelet 進(jìn)程實例化成一組相關(guān)的 Docker 容器并啟動起來。在默認(rèn)情 況下,當(dāng) Pod 里某個容器停止時,Kubernetes會自動檢測到這個問題并且重新啟動這個 Pod 里某所有容器,如果 Pod 所在的 Node 宕機,則會將這個 Node 上的所有 Pod 重新調(diào)度到其它節(jié)點上。
2)靜態(tài) Pod
靜態(tài) Pod 是由 kubelet 進(jìn)行管理的僅存在于特定 Node 上的 Pod,它們不能通過 API Server進(jìn)行管理,無法與 ReplicationController、Deployment 或 DaemonSet 進(jìn)行關(guān)聯(lián),并且kubelet 也無法對它們進(jìn)行健康檢查。

1.6 Pod 生命周期和重啟策略

1)Pod 的狀態(tài)
2)Pod 重啟策略
Pod 的重啟策略包括 Always、OnFailure 和 Never,默認(rèn)值是 Always
3)常見狀態(tài)轉(zhuǎn)換

 


PART2

Kubernetes部署性能監(jiān)控平臺

2.1 概述

開源軟件 cAdvisor(Container Advisor)用于監(jiān)控所在節(jié)點的容器運行狀態(tài),當(dāng)前已經(jīng)被默認(rèn)集成到 kubelet 組件內(nèi),默認(rèn)使用 tcp 4194 端口。
在大規(guī)模容器集群,一般使用Heapster+Influxdb+Grafana 平臺實現(xiàn)集群性能數(shù)據(jù)的采集,存儲與展示。

2.2 環(huán)境準(zhǔn)備

2.2.1 基礎(chǔ)環(huán)境
Kubernetes + heapster + Influxdb + grafana
2.2.2 原理
  • Heapster:集群中各 node 節(jié)點的 cAdvisor 的數(shù)據(jù)采集匯聚系統(tǒng),通過調(diào)用 node 上 kubelet 的 api,再通過 kubelet 調(diào)用 cAdvisor 的 api 來采集所在節(jié)點上所有容器的性能數(shù)據(jù)。Heapster 對性能數(shù)據(jù)進(jìn)行聚合,并將結(jié)果保存到后端存儲系統(tǒng),heapster 支持多種后端存儲系統(tǒng),如 memory,Influxdb 等。

  • Influxdb:分布式時序數(shù)據(jù)庫(每條記錄有帶有時間戳屬性),主要用于實時數(shù)據(jù)采集,時間跟蹤記錄,存儲時間圖表,原始數(shù)據(jù)等。Influxdb 提供 rest api 用于數(shù)據(jù)的存儲與查詢。

  • Grafana:通過 dashboard 將 Influxdb 中的時序數(shù)據(jù)展現(xiàn)成圖表或曲線等形式,便于查看集群運行狀態(tài)。

Heapster,Influxdb,Grafana 均以 Pod 的形式啟動與運行。
2.2.3 部署 Kubernetes 集群性能監(jiān)控
2.2.3.1 準(zhǔn)備 images
kubernetes 部署服務(wù)時,為避免部署時發(fā)生 pull 鏡像超時的問題,建議提前將相關(guān)鏡像pull 到相關(guān)所有節(jié)點(以下以 kubenode1 為例),或搭建本地鏡像系統(tǒng)。需要從 gcr.io pull 的鏡像,已利用 Docker Hub 的"CreateAuto-Build GitHub"功能(Docker Hub 利用 GitHub 上的 Dockerfile 文件 build 鏡像),在個人的 Docker Hubbuild 成功,可直接 pull 到本地使用。
2.2.3.2 下載 yaml 范本
2.2.3.3 heapster-rbac.yaml
2.2.3.4 heapster.yaml
hepster.yaml 由 3 個模塊組成:ServiceAccout,Deployment,Service。
1)ServiceAccount
默認(rèn)不需要修改 ServiceAccount 部分,設(shè)置 ServiceAccount 資源,獲取 rbac 中定義的權(quán)限。
2)Deployment
3)Service
默認(rèn)不需要修改 Service 部分。
4)Service
默認(rèn)不需要修改 Service 部分,注意 Service 名字的對應(yīng)即可。
2.2.3.5 grafana.yaml
grafana.yaml 由 2 個模塊組成:Deployment,Service。
1)Deployment
# 修改處:第 16 行,變更鏡像名;
# 修改處:第 43 行,取消注釋;“GF_SERVER_ROOT_URL”的 value 值設(shè)定后,只能通過API Server proxy 訪問 grafana;
# 修改處:第 44 行,注釋本行;
# INFLUXDB_HOST 的 value 值設(shè)定為 influxdb 的 service 名,依賴于集群 dns,或者直接使用 ClusterIP。
[root@kubenode1 influxdb]# sed -i s|gcr.io/google_containers/heapster-grafana-
amd64:v4.4.3|netonline/heapster-grafana-amd64:v4.4.3|g grafana.yaml
[root@kubenode1 influxdb]# sed -i
43s|# value:|value:|g grafana.yaml
[root@kubenode1 influxdb]# sed -i 44s|value:|# value:|g grafana.yaml
[root@kubenode1 influxdb]# cat grafana.yaml
……
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monitoring-grafananamespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: grafana
spec:
containers:
- name: grafana
image: netonline/heapster-grafana-amd64:v4.4.3
ports:
- containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /etc/ssl/certs
name: ca-certificates
readOnly: true
- mountPath: /var
name: grafana-storage
env:
- name: INFLUXDB_HOST
value: monitoring-influxdb
- name: GF_SERVER_HTTP_PORT
value: "3000"
# The following env variables are required to make Grafana accessible
via
# the kubernetes api-server proxy. On production clusters, we
recommend
# removing these env variables, setup auth for grafana, and expose
the grafana
# service using a LoadBalancer or a public IP.
- name: GF_AUTH_BASIC_ENABLED
value: "false"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
value: Admin
- name: GF_SERVER_ROOT_URL
# If youre only using the API Server proxy, set this value instead:
value: /api/v1/namespaces/kube-system/services/monitoring-
grafana/proxy
# value: /
volumes:
- name: ca-certificates
hostPath:
path: /etc/ssl/certs
- name: grafana-storage
emptyDir: {
2.2.4 驗證
2.2.4.1 啟動監(jiān)控相關(guān)服務(wù)
2.2.4.2 查看相關(guān)服務(wù)
2.2.4.3 訪問 dashboard
瀏覽器訪問訪問 dashboard:https://ip:6443/api/v1/namespaces/kube-
system/services/https:kubernetes-dashboard:/proxy
注意:Dasheboard 沒有配置 hepster 監(jiān)控平臺時,不能展示 node,Pod 資源的 CPU 與內(nèi)存等 metric 圖形Node 資源 CPU/內(nèi)存 metric 圖形:
Pod 資源 CPU/內(nèi)存 metric 圖形:
2.2.4.4 訪問 grafana


END




本文作者:熊靜波

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129488.html

相關(guān)文章

  • Kubernetes從上手到實踐》正式上線

    摘要:有很大一部分的休息時間都用來完成了我的第一本掘金小冊從上手到實踐小冊已經(jīng)正式上線,特意送上各位小伙伴一份禮物,小冊折優(yōu)惠。 時間飛逝,轉(zhuǎn)眼今年又要結(jié)束了。感謝還在關(guān)注的小伙伴,今年確實更新很少,能不取關(guān)的都是真愛... 今年發(fā)生了很多事情,留著過幾天年終總結(jié)的時候再說。有很大一部分的休息時間都用來完成了我的第一本掘金小冊 《Kubernetes 從上手到實踐》 showImg(http...

    CarterLi 評論0 收藏0
  • Kubernetes從上手到實踐》正式上線

    摘要:有很大一部分的休息時間都用來完成了我的第一本掘金小冊從上手到實踐小冊已經(jīng)正式上線,特意送上各位小伙伴一份禮物,小冊折優(yōu)惠。 時間飛逝,轉(zhuǎn)眼今年又要結(jié)束了。感謝還在關(guān)注的小伙伴,今年確實更新很少,能不取關(guān)的都是真愛... 今年發(fā)生了很多事情,留著過幾天年終總結(jié)的時候再說。有很大一部分的休息時間都用來完成了我的第一本掘金小冊 《Kubernetes 從上手到實踐》 showImg(http...

    andot 評論0 收藏0
  • Kubernetes從上手到實踐》正式上線

    摘要:有很大一部分的休息時間都用來完成了我的第一本掘金小冊從上手到實踐小冊已經(jīng)正式上線,特意送上各位小伙伴一份禮物,小冊折優(yōu)惠。 時間飛逝,轉(zhuǎn)眼今年又要結(jié)束了。感謝還在關(guān)注的小伙伴,今年確實更新很少,能不取關(guān)的都是真愛... 今年發(fā)生了很多事情,留著過幾天年終總結(jié)的時候再說。有很大一部分的休息時間都用來完成了我的第一本掘金小冊 《Kubernetes 從上手到實踐》 showImg(http...

    leon 評論0 收藏0
  • 才云科技CTO鄧德源:不可不知的谷歌集群管理經(jīng)驗

    摘要:曾為美國谷歌集群管理組核心成員,主要參與開發(fā)集群管理系統(tǒng)。保證系統(tǒng)升級軟硬件錯誤等均能及時被發(fā)現(xiàn)并處理,谷歌集群能小時不間斷工作。關(guān)于集群管理經(jīng)驗,首先一定要專注于持久的運維自動化工具開發(fā)。 本文僅用于學(xué)習(xí)和交流目的,不得用于商業(yè)目的。非商業(yè)轉(zhuǎn)載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/art... 訪談嘉賓: 鄧德源, 才云科技CT...

    callmewhy 評論0 收藏0
  • 才云科技CTO鄧德源:不可不知的谷歌集群管理經(jīng)驗

    摘要:曾為美國谷歌集群管理組核心成員,主要參與開發(fā)集群管理系統(tǒng)。保證系統(tǒng)升級軟硬件錯誤等均能及時被發(fā)現(xiàn)并處理,谷歌集群能小時不間斷工作。關(guān)于集群管理經(jīng)驗,首先一定要專注于持久的運維自動化工具開發(fā)。 本文僅用于學(xué)習(xí)和交流目的,不得用于商業(yè)目的。非商業(yè)轉(zhuǎn)載請注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/art... 訪談嘉賓: 鄧德源, 才云科技CT...

    Pines_Cheng 評論0 收藏0
  • TOP100summit分享實錄 | JFrog高欣:Kubernetes is hard!JFro

    摘要:本文內(nèi)容節(jié)選自由主辦的第七屆,架構(gòu)師高欣分享的的實踐實錄。當(dāng)然,在部署完成后,我們要做一個監(jiān)測以便掌握它的運行狀況。規(guī)劃配置運行環(huán)境在正式部署前,還要考慮如何規(guī)劃并配置好運行環(huán)境。在使用部署時,可以利用這些命令做驗證,檢驗部署是否正常。 showImg(https://segmentfault.com/img/bVblRHj?w=2880&h=1920); 本文內(nèi)容節(jié)選自由msup主辦...

    鄒強 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<