了解kubernetes

kubernetes核心组件及其作用

  • kubelet调度pod
  • 同一个pod内的容器共享网络、存储
  • Deployment(可以是部署pod也可以是部署service)是在master节点
  • service有一个独立的IP跟pod不一样
  • service通过Label Selector绑定到具有相同Label的pod
  • APIServer提供了资源操作的唯一入口并且提供认证授权和k8s的访问控制
  • ControllerManager负责维护集群的状态:故障检测、扩缩容、滚动更新
  • Scheduler负责资源调度
  • ETCD负责一致性存储:保存了pod、service、集群的状态等信息
  • Kubelet负责维护当前节点容器的生命周期、当前节点的volume、网络等
  • kube-proxy负责service,提供内部的服务发现和负载均衡
  • kube-dns负责整个集群的dns服务(非必须)
  • dashboard提供集群相关信息的可视化界面
  • service只能在集群内部访问,集群外部访问可以将service暴露一个端口给node,集群外通过nodeip+port的方式访问
  • kube-dns让每一个pod都可以通过名字去访问对方

服务编排之Kubernetes

Kubernetes设计理念

  • API设计原则
  • 控制机设计原则

Kubernetes网络

  • CNI
  • Flannel、Calico、Weave
  • Pod网络

Kubernetes scheduler

  • 预选规则(preselect)
  1. NodiskConflict
  2. CheckNodeMemoryPressure
  3. NodeSelector
  4. FitResource
  5. Affinity(亲和性)
  • 优选规则(optimize-select)
  1. SelectorSpreadPriority(分散pod)
  2. LeastRequestedPriority(新pod加入后,node的空闲资源占比)
  3. AffinityPriority

Kubernetes Pod通讯

  • 同一个pod内通讯,共享网络,通过localhost就可以访问
  • 同一个Node不同pod通讯,默认路由都是dockers0,关联在同一个docker0网桥,通过pod ip访问
  • 不同Node不同pod,需要满足pod ip不能相同,Node ip跟pod ip关联起来才能访问

Kubernetes服务发现

  • kube-proxy
    1.Cluster IP
    2.NodePort(集群外部服务通过Node ip+Node port访问到集群内的服务)
  • kube-dns:负责集群内部dns解析,目的是可以让pod之间通过名字去访问

你可能感兴趣的:(了解kubernetes)