Kubernetes 除了网络插件以为,还有两个重要的插件,那就是 CoreDNS 和 Metrics-server
1、CoreDNS
Kubernetes使用定制的CoreDNS应用程序实现名称解析和服务发现功能
ansible_k8s]# ansible-playbook -i example/hosts.multi-node 10.coredns.yml
PLAY [kube_client] ************************************************************************************************************
TASK [coredns : Prepare k8s install dirs] *************************************************************************************
ok: [localhost]
TASK [Create coredns.yaml] ****************************************************************************************************
ok: [localhost]
TASK [Copy coredns.yaml] ******************************************************************************************************
changed: [localhost]
TASK [deploy coredns.yaml] ****************************************************************************************************
ok: [localhost] => {
"msg": " kubectl apply -f /root/k8s-ansible/example/yaml/coredns.yaml "
}
PLAY RECAP ********************************************************************************************************************
localhost : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible_k8s]# kubectl apply -f /root/k8s-ansible/example/yaml/coredns.yaml
serviceaccount/coredns unchanged
clusterrole.rbac.authorization.k8s.io/system:coredns unchanged
clusterrolebinding.rbac.authorization.k8s.io/system:coredns unchanged
configmap/coredns unchanged
deployment.apps/coredns configured
service/kube-dns unchanged
ansible_k8s]# kubectl get po -A | grep coredns
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6f46dbdb7b-7hzq4 1/1 Running 7 (7m55s ago) 10d
2、Metrics-server
Metrics Server通过服务发现机制发现集群上的所有节点,而后自动采集每个节点上kubelet的CPU和内存使用状态,是集群级别资源利用率数据的聚合器。
ansible_k8s]# ansible-playbook -i example/hosts.multi-node 11.metrics-server.yml
PLAY [kube_client] ************************************************************************************************************
TASK [metrics-server : Prepare k8s install dirs] ******************************************************************************
ok: [localhost]
TASK [metrics-server : Copy deploy yaml] **************************************************************************************
ok: [localhost]
TASK [create metrics-server-certs secret] *************************************************************************************
ok: [localhost] => {
"msg": " kubectl -n kube-system create secret generic metrics-server-certs --from-file=/root/k8s-ansible/example/pki/metrics-server/metrics-server-key.pem --from-file=/root/k8s-ansible/example/pki/metrics-server/metrics-server.pem "
}
TASK [deploy metrics-server] **************************************************************************************************
ok: [localhost] => {
"msg": " kubectl apply -f /root/k8s-ansible/example/yaml/metrics-server.yaml "
}
PLAY RECAP ********************************************************************************************************************
localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible_k8s]# kubectl -n kube-system create secret generic metrics-server-certs --from-file=/root/k8s-ansible/example/pki/metrics-server/metrics-server-key.pem --from-file=/root/k8s-ansible/example/pki/metrics-server/metrics-server.pem
secret/metrics-server-certs created
ansible_k8s]# kubectl apply -f /root/k8s-ansible/example/yaml/metrics-server.yaml
serviceaccount/metrics-server unchanged
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader unchanged
clusterrole.rbac.authorization.k8s.io/system:metrics-server unchanged
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader unchanged
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator unchanged
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server unchanged
service/metrics-server unchanged
deployment.apps/metrics-server configured
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io unchanged
ansible_k8s]# kubectl get po -A | grep metrics
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-9644c5989-bmjxb 1/1 Running 8 (8m19s ago) 10d
# 部署成功以后即可查看 pod 或 节点的负载情况
ansible_k8s]# kubectl top po -A
NAMESPACE NAME CPU(cores) MEMORY(bytes)
default http-dump-67cd5cd748-jtwjw 0m 8Mi
default http-dump-67cd5cd748-ml4dv 0m 10Mi
default http-dump-67cd5cd748-rfnbc 1m 12Mi
default kuard-b8496fc59-4ss66 1m 9Mi
default kuard-b8496fc59-g8txs 1m 9Mi
default kuard-b8496fc59-l8ncs 0m 7Mi
ingress-nginx ingress-nginx-controller-6blvg 4m 261Mi
ingress-nginx ingress-nginx-controller-8k9bk 3m 261Mi
ingress-nginx ingress-nginx-controller-qp6kn 3m 261Mi
kube-system calico-kube-controllers-84c5fc758f-m4rvb 5m 25Mi
kube-system calico-node-7spmb 44m 154Mi
kube-system calico-node-b8bsq 48m 152Mi
kube-system calico-node-fjk6b 38m 145Mi
kube-system calico-node-m8xll 43m 140Mi
kube-system calico-node-pn2tj 47m 151Mi
kube-system coredns-6f46dbdb7b-7hzq4 2m 25Mi
kube-system kube-lb-rocky01.example.io 1m 11Mi
kube-system kube-lb-rocky02.example.io 1m 11Mi
kube-system kube-lb-rocky03.example.io 1m 25Mi
kube-system kube-lb-rocky04.example.io 5m 25Mi
kube-system kube-lb-rocky05.example.io 1m 25Mi
kube-system metrics-server-9644c5989-bmjxb 6m 36Mi
ansible_k8s]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
rocky01.example.io 215m 3% 888Mi 6%
rocky02.example.io 255m 4% 887Mi 6%
rocky03.example.io 223m 1% 1037Mi 3%
rocky04.example.io 245m 1% 1068Mi 3%
rocky05.example.io 256m 1% 1084Mi 3%