kubectl: k8s是命令行端,用来发送客户的操做指令。
API server:是k8s集群的前端接口,各类客户端工具以及k8s的其余组件能够经过它管理k8s集群的各类资源。它提供了HTTP/HTTPS RESTful API,即K8S API.
Scheduler:负责决定将Pod放在哪一个Node上运行。在调度时,会充分考虑集群的拓扑结构,当前各个节点的负载状况,以及应对高可用、性能、数据亲和性和需求。
Controller Manager:负责管理集群的各类资源,保证资源处于预期的状态。它由多种Controller组成,包括Replication Controller、Endpoints Controller.
Namespace Controller、Serviceaccounts Controller等等。
Etcd:负责保存k8s集群的配置信息和各类资源的状态信息。当数据发生变化时,etcd会快速的通知k8s相关组件。第三方组件,它有可替换方案。Consul、 zookeeper
Pod: k8s集群的最小组成单位。一个Pod内,能够运行一个或多个容器。大多数状况下,一个Pod内只有一个Container容器。
Flanner:是k8s集群网路方案,能够保证Pod的跨主机通讯。第三方解决方案,也有替换方案。前端
查看应用在哪一个节点
[root@master ~]# kubectl get pod --all-namespaces node
查看应用在哪一个节点的详细信息
[root@master ~]# kubectl get pod --all-namespaces -o wideweb
Kubeler:他是Node的agent(代理),当Scheduler肯定某个Node上运行Pod以后,会将Pod的具体配置信息发送给该节点的Kubelet,Kubeler会根据这些信息建立和运行容器,并向Master报告运行状态。
Kube-proxy:负责将访问service的TCP/UDP数据流转发到后端的容器。若是有多个副本,kube-proxy会实现负载均衡。docker
运行一个例子:三台都导入httpd镜像导成docker镜像
建立一个deployment资源对象。Pod控制器。
[root@master ~]# kubectl run test-web --image=httpd --replicas=2
查看节点:
[root@master ~]# kubectl get deployments.
简写:
[root@master ~]# kubectl get deploy后端
[root@master ~]# kubectl get pod架构
哪台dang掉重启kuelet:
[root@master ~]# systemctl restart kubelet
[root@master ~]# kubectl get pod -o wide负载均衡
删除节点:
[root@master ~]# kubectl delete pod test-web-5b56bdff65-j6g75
仍是两个:这就是控制器的缘由ide
分析各个组件的做用以及架构工做流程:
1)kubectl发送部署请求到API server
2)API server 通知Controller Manager建立一个Deployment资源
3)Scheduler执行调度任务,将两个副本Pod分发到node01和node02上
4)node01和node02上的kubelet在各自节点上建立并运行Pod。
补充:
1.应用的配置和当前的状态信息保存在etcd中,执行kubectl get pod时API server会从etcd中读取这些数据。
2.flannel回味每一个Pod分配一个IP。但此时没有建立Service资源,目前kube-proxy尚未参与进来。工具