K8s学习笔记 (1)
@ wgjak47 | 星期四,七月 11 日,2019 年 | 2 分钟阅读 | 更新于 星期四,七月 11 日,2019 年

k8s学习笔记

k8s学习笔记(一)

kubernetes是google的开源容器编排调度引擎。用户只要定义出服务的最终状态,kubernetets就可以自动帮你将服务达到和维持再最终状态。因为kubernets这个名字太差,很多时候简称为k8s。 这篇是看k8s handbook的学习笔记

架构

  • Global arch

  • Master master_arch

  • Node Node_arch

核心组件

  • etcd保存了整个集群的状态;
  • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;
  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

周边组件

  • CoreDNS负责为整个集群提供DNS服务
  • Ingress Controller为服务提供外网入口
  • Prometheus提供资源监控
  • Dashboard提供GUI
  • Federation提供跨可用区的集群

k8s对象(objects)

Kubernetes 对象是 “目标性记录” —— 一旦创建对象,Kubernetes 系统将持续工作以确保对象存在。通过创建对象,可以有效地告知 Kubernetes 系统,所需要的集群工作负载看起来是什么样子的,这就是 Kubernetes 集群的 期望状态。

资源对象

  • Pod
  • ReplicaSet
  • ReplicationController
  • Deployment
  • StatefulSet
  • DaemonSet
  • Job
  • CronJob
  • HorizontalPodAutoscaler

配置对象

  • Node
  • Namespace
  • Service
  • Secret
  • ConfigMap
  • Ingress
  • Label
  • CustomResourceDefinition
  • ServiceAccount

存储对象

  • Volume
  • Persistent Volume

策略对象

  • SecurityContext
  • ResourceQutoa
  • LimitRange

资源配置与配额

  • Pod级别,最小资源调度单位
  • Namespace级别,限制资源配额和每个Pod的资源使用区间

服务发现与负载均衡

  • Service 直接用Service提供cluster内部的负载均衡,并借助cloud provider提供的LB提供外部访问
  • Ingress 还是用Service提供cluster内部的负载均衡,但是通过自定义LB提供外部访问
  • Service Load Balancer 把load balancer直接跑在容器中,实现Bare Metal的Service Load Balancer
  • Custom Locad Balancer 自定义负载均衡,并替代kube-proxy,一般在物理部署Kubernetes时使用,方便接入公司已有的外部服务

安全与权限管理

  • 网络隔离 calico/flannel等插件
  • 资源隔离 pod/namespace
  • 身份隔离 RBAC