k8s健康檢測和存儲試驗(yàn)

在上一篇簡書中,我用k8s搭建了一個(gè)dns集群。

在這里將給這個(gè)集群增加一個(gè)健康檢測和掛載本地存儲

一、健康檢測:

k8s提供了兩類探針:livenessProbe和readinessProbe

????????livenessProbe:用于判斷容器是否存活。

????????readinessProbe: 用于判斷容器是否啟動(dòng)完成。

每類探針都有三種探測方法:

????????exec:通過執(zhí)行命令來檢查服務(wù)是否正常,針對復(fù)雜檢測或無HTTP接口的服務(wù),命令返回值為0則表示容器健康。

????????httpGet:通過發(fā)送http請求檢查服務(wù)是否正常,返回200-399狀態(tài)碼則表明容器健康。

????????tcpSocket:通過容器的IP和Port執(zhí)行TCP檢查,如果能夠建立TCP連接,則表明容器健康。

這里將采用livenessProbe-tcpSocket的方式,判斷bind的53端口:

livenessProbe: #健康檢測

? ? ? ? ? initialDelaySeconds: 5?

? ? ? ? ? tcpSocket:

? ? ? ? ? ? port: 53

執(zhí)行kubectl apply -f ,等待pod變r(jià)unning狀態(tài):

圖1:第一次檢測

接著把pod里面的named服務(wù)停止掉:

圖2:第二次檢測

稍等一會,再查看pod:

圖3:pod把容器重啟
圖4:容器重啟后,服務(wù)正常

成功!

二、configMap和volume

1.configMap

configMap api給我們提供了向容器中注入配置信息的機(jī)制,它可以被用來保存單個(gè)屬性,也可以用來保存整個(gè)配置文件或者JSON二進(jìn)制大對象。

config創(chuàng)建方式有使用目錄創(chuàng)建、使用文件創(chuàng)建、使用字面值創(chuàng)建,詳情請查看官網(wǎng)。這里采用文件創(chuàng)建。

采用文件創(chuàng)建方式: kubectl create configmap NAME --from-file=filename

--from-file? 這個(gè)參數(shù)可以使用多次,效果就跟指定整個(gè)目錄是一樣的。

圖5:查看創(chuàng)建的configMap

在pod中使用configMap有:使用configMap來替代環(huán)境變量,用configMap設(shè)置命令行參數(shù),通過數(shù)據(jù)卷插件使用configMap

通過數(shù)據(jù)卷插件使用configMap:

????volumeMounts: #接在containers下:

????- name: root-conf? ?#named.conf配置信息

????????mountPath: /etc/named.conf

????????subPath: named.conf

????- name: zones-volume? #com.解析配置信息

????????mountPath: /var/named/zones/root.master

????????subPath: root.master

volumes: #與container同一級

????- name: zones-volume

????????configMap:

????????????name: root-master #已經(jīng)用文件創(chuàng)建好的configMap名字

????????????items:

????????????- key: root.master? #鍵就是文件名

????????????????path: root.master? #值就是文件內(nèi)容

????- name: root-conf

????????configMap:

????????????name: root-conf

????????????items:

????????????- key: named.conf

????????????????path: named.conf

執(zhí)行kubectl apply -f ,等待pod變r(jià)unning狀態(tài):

圖6:查看容器配置是否和configMap設(shè)置的一樣

因此 ,通過修改configMap可以一次修改多個(gè)pod的配置文件。

2.volume

????????????volumeMounts: #掛載volume

? ? ? ? - name: zones-volume

? ? ? ? ? mountPath: /var/named/zones

? ? ? volumes:

? ? ? - name: zones-volume? #配置

? ? ? ? hostPath:

? ? ? ? ? path: /root/named/zones

? ? ? ? ? type: Directory

注意:pod所在節(jié)點(diǎn)的宿主機(jī)需要有這個(gè)目錄,否則會報(bào)錯(cuò)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容