组件
k8s 的组件
有哪些组件?
如何得知 k8s 有哪些组件?
看 k8s 进程
在 k8s 的 master 上,用 ps 命令查看 k8s 相关的进程:
ps -ef | grep -v kworker | grep -v nfs | grep -v nginx | grep -v pause | grep -v containerd | grep -v smbd | grep -v cpuhd | grep -v sshd | grep -v /usr/bin | grep -v /usr/sbin | grep -v scsi | grep -v /sbin
排除和k8s无关的进程,能看到:
root 1388 1299 0 May13 ? 00:04:25 kube-scheduler --authentication-kubeconfig=/etc/kubernetes/scheduler.conf --authorization-kubeconfig=/etc/kubernetes/scheduler.conf --bind-address=127.0.0.1 --kubeconfig=/etc/kubernetes/scheduler.conf --leader-elect=true
root 1398 1297 0 May13 ? 00:17:47 kube-apiserver --advertise-address=192.168.3.112 --allow-privileged=true --authorization-mode=Node,RBAC --client-ca-file=/etc/kubernetes/pki/ca.crt --enable-admission-plugins=NodeRestriction --enable-bootstrap-token-auth=true --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/etc/kubernetes/pki/sa.pub --service-account-signing-key-file=/etc/kubernetes/pki/sa.key --service-cluster-ip-range=10.96.0.0/12 --tls-cert-file=/etc/kubernetes/pki/apiserver.crt --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
root 1399 1295 0 May13 ? 00:08:55 etcd --advertise-client-urls=https://192.168.3.112:2379 --cert-file=/etc/kubernetes/pki/etcd/server.crt --client-cert-auth=true --data-dir=/var/lib/etcd --experimental-initial-corrupt-check=true --experimental-watch-progress-notify-interval=5s --initial-advertise-peer-urls=https://192.168.3.112:2380 --initial-cluster=k8s112=https://192.168.3.112:2380 --key-file=/etc/kubernetes/pki/etcd/server.key --listen-client-urls=https://127.0.0.1:2379,https://192.168.3.112:2379 --listen-metrics-urls=http://127.0.0.1:2381 --listen-peer-urls=https://192.168.3.112:2380 --name=k8s112 --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt --peer-client-cert-auth=true --peer-key-file=/etc/kubernetes/pki/etcd/peer.key --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt --snapshot-count=10000 --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
root 1401 1293 0 May13 ? 00:05:33 kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf --bind-address=127.0.0.1 --client-ca-file=/etc/kubernetes/pki/ca.crt --cluster-cidr=10.244.0.0/16 --cluster-name=kubernetes --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt --cluster-signing-key-file=/etc/kubernetes/pki/ca.key --controllers=*,bootstrapsigner,tokencleaner --kubeconfig=/etc/kubernetes/controller-manager.conf --leader-elect=true --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --root-ca-file=/etc/kubernetes/pki/ca.crt --service-account-private-key-file=/etc/kubernetes/pki/sa.key --service-cluster-ip-range=10.96.0.0/12 --use-service-account-credentials=true
root 3114 2988 0 May13 ? 00:00:07 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=k8s112
root 5283 5118 0 May13 ? 00:00:39 /opt/bin/flanneld --ip-masq --kube-subnet-mgr
1001 8052 7828 0 May13 ? 00:00:06 /dashboard-auth
65532 8054 7829 0 May13 ? 00:00:51 /coredns -conf /etc/coredns/Corefile
1001 8069 7948 0 May13 ? 00:00:06 /dashboard-api --insecure-bind-address=0.0.0.0 --bind-address=0.0.0.0 --namespace=kubernetes-dashboard --metrics-scraper-service-name=kubernetes-dashboard-metrics-scraper
1001 8070 7940 0 May13 ? 00:00:05 /dashboard-metrics-scraper
sky 8072 7968 0 May13 ? 00:01:29 /metrics-server --cert-dir=/tmp --secure-port=10250 --kubelet-preferred-address-types=InternalIP --kubelet-insecure-tls --kubelet-use-node-status-port --metric-resolution=15s
1001 8073 7860 0 May13 ? 00:00:05 /dashboard-web --insecure-bind-address=0.0.0.0 --bind-address=0.0.0.0 --namespace=kubernetes-dashboard --settings-config-map-name=kubernetes-dashboard-web-settings
65532 8083 7937 0 May13 ? 00:00:53 /coredns -conf /etc/coredns/Corefile
这里面直接和k8s相关的进程有:
- coredns
- etcd
- kube-controller-manager
- kube-proxy
- kube-apiserver
- kube-scheduler
k8s 扩展之一的 dashboard:
- dashboard-api
- dashboard-metrics-scraper
- dashboard-web
- dashboard-auth
k8s 扩展之一的 metrics-server:
- metrics-server
看 k8s build 的产物
clone k8s 的源码:
https://github.com/kubernetes/kubernetes/
然后 build 一下:
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make
可以看到构建的日志:
+++ [0514 21:34:35] Building go targets for linux/amd64
github.com/onsi/ginkgo/v2/ginkgo (non-static)
k8s.io/apiextensions-apiserver (static)
k8s.io/component-base/logs/kube-log-runner (static)
k8s.io/kube-aggregator (static)
k8s.io/kubernetes/cluster/gce/gci/mounter (static)
k8s.io/kubernetes/cmd/kubeadm (static)
k8s.io/kubernetes/cmd/kube-apiserver (static)
k8s.io/kubernetes/cmd/kube-controller-manager (static)
k8s.io/kubernetes/cmd/kubectl (static)
k8s.io/kubernetes/cmd/kubectl-convert (static)
k8s.io/kubernetes/cmd/kubelet (non-static)
k8s.io/kubernetes/cmd/kubemark (static)
k8s.io/kubernetes/cmd/kube-proxy (static)
k8s.io/kubernetes/cmd/kube-scheduler (static)
k8s.io/kubernetes/test/conformance/image/go-runner (non-static)
k8s.io/kubernetes/test/e2e/e2e.test (test)
k8s.io/kubernetes/test/e2e_node/e2e_node.test (test)
构建的产物在 _output/bin 目录下,可以看到:
$ pwd
/home/sky/work/code/kubernetes/kubernetes/_output/bin
$ ls -la
total 1069404
drwxrwxr-x 2 sky sky 4096 May 14 21:34 .
drwxrwxr-x 3 sky sky 4096 May 14 20:50 ..
-rwxr-xr-x 1 sky sky 75759800 May 14 21:34 apiextensions-apiserver
-rwxr-xr-x 1 sky sky 117823416 May 14 21:34 e2e_node.test
-rwxr-xr-x 1 sky sky 126209360 May 14 21:34 e2e.test
-rwxr-xr-x 1 sky sky 10580260 May 14 21:34 ginkgo
-rwxr-xr-x 1 sky sky 2056484 May 14 21:34 go-runner
-rwxr-xr-x 1 sky sky 74133688 May 14 21:34 kubeadm
-rwxr-xr-x 1 sky sky 73158840 May 14 21:34 kube-aggregator
-rwxr-xr-x 1 sky sky 98341048 May 14 21:34 kube-apiserver
-rwxr-xr-x 1 sky sky 91111608 May 14 21:34 kube-controller-manager
-rwxr-xr-x 1 sky sky 59900088 May 14 21:34 kubectl
-rwxr-xr-x 1 sky sky 58917048 May 14 21:34 kubectl-convert
-rwxr-xr-x 1 sky sky 82080036 May 14 21:34 kubelet
-rwxr-xr-x 1 sky sky 1839288 May 14 21:34 kube-log-runner
-rwxr-xr-x 1 sky sky 80322744 May 14 21:34 kubemark
-rwxr-xr-x 1 sky sky 70992056 May 14 21:34 kube-proxy
-rwxr-xr-x 1 sky sky 70004920 May 14 21:34 kube-scheduler
-rwxr-xr-x 1 sky sky 1757368 May 14 21:34 mounter
可以看到,k8s 的组件有:
- apiextensions-apiserver
- kubeadm
- kube-aggregator
- kube-apiserver
- kube-controller-manager
- kubectl
- kubectl-convert
- kubelet
- kube-log-runner
- kubemark
- kube-proxy
- kube-scheduler