環(huán)境:
docker:20.10.8
k8s:1.21.2
操作系統(tǒng):CentOS Linux release 8.4.2105
一、入門概念:
?node:假如一個k8s集群三臺機(jī)器:A、B、C。ABC稱為節(jié)點(diǎn)。
docker鏡像:是一個特殊的文件系統(tǒng),除了提供容器運(yùn)行時所需的程序、庫、資源、配置等文件外,還包含了一些運(yùn)行時準(zhǔn)備的一些配置參數(shù)。
docker容器:是一種輕量級虛擬化技術(shù),目的和虛擬機(jī)一樣,都是為了隔離環(huán)境。但是它不像虛擬機(jī)采用操作系統(tǒng)級別的資源隔離,容器采用的是進(jìn)程級的系統(tǒng)隔離。
k8s里的pod:k8s的中心思想是每個容器只安裝1個進(jìn)程,多個或1個容器屬于一個pod。然后這個pod下的容器可以通過volume的方式共享磁盤。也就是說,應(yīng)該把整個pod看作虛擬機(jī),然后每個容器相當(dāng)于運(yùn)行的虛擬機(jī)的進(jìn)程。
k8s里的deployment:是最常用的 k8S 工作負(fù)載控制器(Workload Controllers),是 k8s 的一個抽象概念,用于更高級層次對象,部署和管理 Pod。主要功能:應(yīng)用部署、應(yīng)用升級、應(yīng)用實(shí)例擴(kuò)容、縮容、發(fā)布、失敗回滾、應(yīng)用下線。
二、k8s安裝組件概念:
kubelet(默認(rèn)端口10250):負(fù)責(zé)啟動pod和容器。
kubeadm: 用于初始化集群。
kubectl:命令行工具。可以部署和管理應(yīng)用,查看各種資源,創(chuàng)建、刪除和更新組件。
三、k8s出現(xiàn)公鑰私鑰不一致等問題可以重置集群
kubeadm reset (執(zhí)行完會提示要手動刪除配置文件,看提示信息操作即可)
kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
注意:按照上一步執(zhí)行結(jié)果提示執(zhí)行后,才可以執(zhí)行kubectl get pods -n kube-system?

三、命令
查看pod:kubectl get pods -n kube-system?
健康檢查:curl -k https://localhost:6443/healthz
四、安裝metric-server,命令行和接口地址均可查詢指標(biāo)信息
前提條件:需要集群環(huán)境,如果單機(jī)安裝metric-server,pod狀態(tài)一直處于pending中(參考地址:https://blog.51cto.com/u_15329153/5263626)。
以下安裝參考以下兩個地址:
https://blog.csdn.net/qq_29974981/article/details/122553328
https://blog.51cto.com/u_15127645/4342882
1、拉取鏡像,修改標(biāo)簽
docker pull cnskylee/metrics-server:v0.5.0
docker tag cnskylee/metrics-server:v0.5.0 k8s.gcr.io/metrics-server/metrics-server:v0.5.0
2、創(chuàng)建components-v0.5.0.yaml文件
https://github.com/zn19900116/k8s/blob/master/metric-server-v0.5.0.yaml
#注意以下兩行:? ? ?
?hostNetwork: true
? ? ? dnsPolicy: ClusterFirstWithHostNet
3、執(zhí)行安裝
kubectl apply -f ./components-v0.5.0.yaml
4、測試kubectl top命令的使用
kubectl top pods -n kube-system
5、url訪問https://10.128.106.121:10250/stats/summary如果提示未授權(quán),需要修改kubelet配置,systemctl status kubelet查看所有配置文件,找到如下配置項,修改后重啟即可訪問(參考地址:https://cloud.tencent.com/developer/article/2000490):


”AlwaysAllow”: 安全端口授權(quán)插件的有序列表,分別以逗號分AlwaysAllow,AlwaysDeny,RBAC,ABAC
10250(kubelet API):kubelet server 與 apiserver 通信的端口,定期請求 apiserver 獲取自己所應(yīng)當(dāng)處理的任務(wù),通過該端口可以訪問獲取 node 資源以及狀態(tài)。kubectl查看pod的日志和cmd命令,都是通過kubelet端口10250訪問.
五、安裝kube-state-metrics
kube-state-metrics 主要關(guān)注的是業(yè)務(wù)相關(guān)的一些元數(shù)據(jù),比如 Deployment、Pod、副本狀態(tài)等
metrics-server 主要關(guān)注的是資源度量 API?的實(shí)現(xiàn),比如 CPU、文件描述符、內(nèi)存、請求延時等指標(biāo)。
參考地址:http://www.itdecent.cn/p/e26440453cfb
注意:端口映射還需要kube-controller-manager-m和ingress操作。
kube-controller-manager-m的配置文件如下(kubectl apply -f ./mandatory.yaml):
https://github.com/zn19900116/k8s/blob/master/mandatory.yaml
ingress的配置文件如下(kubectl apply -f ./ingress_kube-state.yaml):
https://github.com/zn19900116/k8s/blob/master/ingress_kube-state.yaml
五、安裝dashborad
參考:https://blog.csdn.net/huang_dannier/article/details/122419447
六、刪除pod方法
參考:https://blog.csdn.net/ichen820/article/details/119061939
七、單機(jī)安裝方法
參考:http://www.itdecent.cn/p/dadec614632b