kubernetes 学习笔记--抽象概念--资源对象
1、基本概念
master 组件: api server 、sheduler、controller-manager 、etcd
node 组件: docker 、kube-proxy、kubelet
一下为个人理解,若存在偏差请指正
etcd :键值数据库
api server :为统一入口,及所有操作都与api server 通讯,然后更新到etd 数据库
sheduler :调度器,根据deploy 等控制器的操作调度相关pod 至合适的node节点
controller-manager:控制器管理工具,如ReplicaSet、Deployment、DaemonSet等控制器在其管控下实现功能
kubelet :node 节点的代理工具,与 api server通讯并操作节点
kube-proxy:管控service 资源的工具,由其生成对应的iptables或ipvs 规则
2、抽象概念
kubernetes 中的一个重要概念,称之为资源。像Pod 、Service 、Ingress、ConfigMap、StatefulSet 、node等,在api server 操作中都称之为资源对象。最重要的资源对象为Pod ,一般由ReplicaSet、Deployment等控制器创建。Deployment是ReplicaSet的抽象,多了些调度升级策略等功能。Service 是Pod 对象上的服务抽象,提供某种入口,类似四层代理lvs。Ingress也是如此,类似七层代理nignx、haproxy 等。此图可以很好理解常用资源的关系
service 资源有四种类型ClusterIP、NodePort、LoadBalancer、ExternalName
ClusterIP:集群内部通讯ip,外部不可访问
NodePort:建立在ClusterIP之上,将NodePort 映射至ClusterIP,然后可以通过nodeip:nodeport 访问
LoadBalancer:可用外部的lvs、haproxy等负载均衡工具实现,转发至NodePort
ExternalName:集群内部访问外部资源用,没有ClusterIP、NodePort
Ingress 资源:基于URL、虚拟主机、TLS等类型
因Ingress资源运行模式也是一个pod ,而pod 对外提供服务需要基于service ,因此需要部署成Deployment控制器管控的pod资源或者DaemenSet控制器管控的pod资源。
Deployment控制器管控的pod资源:客户端ip-->externalLB-->NodePort-->service-->ingress
DaemenSet控制器管控的pod资源:客户端ip-->externalLB-->hostIP:hostPort-->Podip:Port