在上一篇簡書中,我用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):

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

稍等一會,再查看pod:


成功!
二、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è)目錄是一樣的。

在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):

因此 ,通過修改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ò)。