Клиент Kubernetes
官方提供的用戶端工具kubectl,一種用在與Kubernetes API互動的命令列工具。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.15", GitCommit:"2adc8d7091e89b6e3ca8d048140618ec89b39369", GitTreeState:"clean", BuildDate:"2020-09-02T11:40:00Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.15", GitCommit:"2adc8d7091e89b6e3ca8d048140618ec89b39369", GitTreeState:"clean", BuildDate:"2020-09-02T11:31:21Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}
會看到2種版本,一個是本機kubectl版本、一個是Kubernetes API伺服器版本。版本可以相容1個minor version差異。
например, api сервер是1.20 kubectl可以是1.21, 1.20, 1.19。
Компоненты кластера
Kubernetes proxy負責將網路流量路由至叢集內的LoadBalancer,存在於每個node。Kubernetes有一個名為DaemonSet的API物件,來達到此目的。
Прокси Kubernetes отвечает за маршрутизацию сетевого трафика к сервисам с балансировкой нагрузки в кластере Kubernetes. Чтобы выполнять свою работу, прокси должен присутствовать на каждом узле кластера. В Kubernetes есть объект API под названием DaemonSet, о котором вы узнаете далее в книге, и который используется во многих кластерах для достижения этой цели.
$ k get daemonSets --all-namespaces
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system kube-flannel-ds 1 1 1 1 1 <none> 19h
kube-system kube-proxy 1 1 1 1 1 beta.kubernetes.io/os=linux 19h
Kubernetes DNS作為副本式服務運行在叢集中。根據叢集大小,可能會看到一個或多個DNS伺服器運行。
Kubernetes также запускает DNS-сервер, который обеспечивает именование и обнаружение служб, определенных в кластере. Этот DNS-сервер также работает как реплицированный сервер на кластере. В зависимости от размера вашего кластера вы можете увидеть один или несколько DNS-серверов, работающих в вашем кластере.
DNS以Deployment運行,它會管理所有DNS的replica。
$ k get deployments --namespace=kube-system coredns
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2 2 2 19h
還有一個Service,它為DNS提供LoadBalance。
$ kubectl get svc --namespace=kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 19h
Kubernetes UI 只有一個replica,但是為了可靠性和方便升級,還是透過Kubernetes deployment管理。