十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Master node(主节点)
Linux:一切皆是文件
K8s:一切皆是资源
Kubectl:k8s是命令行端,用来发送用户的操做指令。
Authorization(认证授权机制)
API(编程接口)
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等等。
第三方组件:他有可替换方案。Consul,zookeeper。
Etcd:负责保存k8s集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速的通知k8s相关组件。
**Pod:k8s集群的最小组成单位,一个Pod内,可以运行一个或多个容器。大多数情况下,一个Pod内只有一个Container容器。
Flannel:是k8s集群网络方案,可以保证Pod的跨主机通信。
第三方解决方案,也有替换方案。
可以查看IP地址,以及运行在那个节点之上。
[root@master ~]# kubectl get pod --all-namespaces -o wide
Node 节点:
Kubelet:他是node的agent(代理),当scheduler确定某个Node上运行Pod之后,会将Pod的具体配置信息发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向Master报告运行状态。
kube-proxy:负责将访问service的TCP/UDP数据流转发到后端的容器,如果有多个副本,kube-proxy会实现负载均衡。
Cadvisor:控制
//运行一个例子:
创建一个deployment资源对象,pod控制器
kubectl run test-web --image=httpd --replicas=2
查看:
[root@master ~]# kubectl get pod -o wide
[root@master ~]# kubectl get deployments.
分析各个组件的作用以及架构工作流程。
1》kubectl发送部署请求到API server
2》APIserver通知Controller Manager创建一个Deployment资源
3》Scheduler执行调度任务,将两个副本Pod分发到node01和node02上
4》node01和node2上的kubelet在各自节点上创建并运行Pod。
补充:
1.应用的配置和当前的状态信息保存在etcd中,执行kubectl get pod 是API server会从etcd中读取这些数据。
2.Flannel会为每个Pod分配一个IP,但此时没有创建Service资源,目前kube-proxy还没有参与进来。
kubectl run test-web --image=httpd --replicas=2
kubectl get nodes
19 kubectl get deployments.
20 kubectl get pod
21 kubectl get pod -o wide
22 systemctl restart kubelet.service
23 kubectl get pod -o wide
24 kubectl delete pod test-web-5b56bdff65-fwp4l
26 kubectl get pod -o wide
2.Flannel回味每个pod分配一个ip,但此时没有闯进啊service资源,目前kube-proxy还没有参与进来