K8S 02 快速入门

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

Pod / Pod 控制器

Pod: 能够被运行的最小逻辑单元. 边车(SideCar)模式, 类似那种带挎抖的摩托车.

  1个 Pod 可以运行多个容器, 容器之间共享 UTS + NET + IPC 名称空间.

Pod 控制器: 管理 副本数,生命周期,健康状态等, K8S 提供多种控制器:

  Deployment, DaemonSet, ReplicaSet, StatefulSet, Job, Cronjob

Name / Namespace

每一种功能都是一种 "资源" , 隔离资源 -> Namespace, 在 metadata 中定义了各种资源的 name.

Label

资源与标签之间是多对多的关系. Label选择器: 可以通过标签来过滤资源.

标签的组成是 key = value

Service / Ingress

在 K8S 中, 每个 Pod 都会分配一个独立的 IP 地址. 但这个IP地址会随着Pod的销毁而消失.

一个service 可以看做一组提供相同服务的 Pod 的对外访问接口, service 作用于哪些 Pod 是通过标签选择器来定义的。

Ingress 是 K8S 集群里的工作在 OSI 网络参考模型下, 第7层的应用(最上层应用层) 对外暴露的接口.

  abc.od.com/sh,  通过 Ingress 决定这个地址找哪个 service, service -> Pod 决定找哪个 Pod.

Service 暴露的是 ip + port 的形式, 而 Ingress 则可以调度不同业务域,不同 URL 访问路径的业务流量

核心组件

配置存储中心 -> etcd服务, 存储集群元数据信息, key-value 形式

主控(master)节点

  kube-apiservice: restful API 接口. 负责数据交互. 通信枢纽, 资源配额入口.

  kube-controller-manager: 管理控制器的,有一系列控制器, Node Controller, Deployment Controller, Service Controller......

  kube-scheduler: 接收调度 pod 到适合的运算节点上. 预先策略(predict), 预选策略(priorities)

运算(node)节点

  kube-kubelet 服务: 定时获取 pod 的期望状态, 真正干活的, 定时汇报当前节点的状态给 apiserver

  kube-proxy服务:每个节点运行网络代理,service资源的载体, 管理 clusterip -> podip, 建立pod网络和集群网络的关系. 

    流量调度模式: IPVS 推荐. 

CLI客户端

  kubectl : 命令行工具

核心附件(插件)

  CNI 网络插件 -> flanel / calico

  服务发现插件 -> coredns

  服务暴露插件 -> traefik

  GUI管理插件 -> dashboard

三套网络

service 网络是虚拟网络. 192.168.0.0/16

Pod 网络: 实际网络. 172.7.21.0/24 (Node 主机的 IP 地址为 10.4.7.21)

Cluster 节点网络. 10.4.7.0/24

逻辑架构图

举例, 部署架构

实际上, 一个server 上可以同时部署 master 和 node 节点, 当然, 如果资源足够充分, 可以拆分 master 和 node 到不同机器上.

左下角的2个大框部分才是 K8S, 上边,右边的实际上不属于 K8S 范畴.

原文地址:https://www.cnblogs.com/moveofgod/p/12566535.html