Kubrenetes入门

1. 基础概念

  • Pod/Pod控制器
  • Name/NameSpace
  • Label/Label选择器
  • Service/Ingress

1.1 Pod/Pod控制器

Pod

  • Pod是K8S里能够被运行的最小逻辑单元
  • 1个Pod里面可以运行多个容器,被称为SideCar模式

Pod控制器

  • Pod控制器是Pod启动的一种模板,用来保证在K8S里启动的Pod应始终按照人们的预期运行(副本数、声明周期、健康状态检查)
  • K8S内提供了众多的Pod控制器:Development, DaemonSet, ReplicaSet, StatefulSet, Job, Cronjob 

1.2  Name/Namespace

Name

  • K8S内部使用“资源”来定义每一种逻辑概念,每种“资源”都有自己的“名称”
  • “资源”包括:apiVersion, kind, metadata, spec, status
  • “名称”通常定义在“资源”的metadata里

Namespace

  • 可以理解为K8S内部的虚拟集群组
  • 不同名称空间内的“资源”名称可以相同,相同名称空间内的“资源”不行
  • K8S默认存在的名称空间有:default, kube-system, kube-public

1.3 Label/Label选择器

Label

  • 标签用于分类管理资源对象
  • 标签和资源是多队多的关系
  • 标签是KV形式

Label选择器

  • 可以通过标签选择器过滤指定的标签
  • 标签选择器目前有两个:基于等值关系基于集合关系

1.4 Service/Ingress

Service

  • 每个Pod会被分配一个单独的IP地址,这个IP地址会随着Pod的销毁而消失
  • Service可以看做一组提供相同服务的Pod对外访问的接口
  • Service作用于哪些Pod是通过标签选择器来定义

Ingress

  • Ingress是K8S集群里工作在OSI网络参考模型下,第7层的应用,对外暴露的接口
  • Service只能进行L4流量调度,表现形式是ip+port
  • Ingress则可以调通不同业务域、不同URL访问路径的业务流量 

2. 核心组件

配置存储中心:etcd服务

主控(master)节点:

  • kube-apiserver

提供了集群管理的REST API接口,负责其他模块之间的交数据交互,是资源配额的控制入口,提供完备的集群安全机制

  • kube-controller-manager

由一系列控制器组成,管理所有控制器

  • kube-scheduler

接收调度pod到适合的运算节点上,预选策略、优选策略

运算(node)节点:

  • kube-kubelet

主要功能是定时从某个地方获取节点上pod的期望状态,并调用对应的容器平台接口达到这个状态;定时汇报当前节点状态给apiserver,以共调度的时候使用;镜像和容器的清理工作

  • kube-proxy

是K8S在每个节点上运行网络代理,service资源的载体;建立了pod网络和集群网络的关系(clusterIP->podIP);流量调度模式:Userspace(废弃)、Iptables(濒临废弃)、Ipvs(推荐)

CLI客户端:kubectl

核心附件:

  • CNI网络插件:flannel/calico
  • 服务发现用插件:coredns
  • 服务暴露用插件:traefik
  • GUI管理插件:Dashboard

3. K8S架构图

系统架构

Kubrenetes入门

三重网络

Kubrenetes入门

 

上一篇:kubectl get node查看节点报错


下一篇:OLAP工作的基本概念(结合个人工作)