k8s 理论知识总结

k8s 理论知识总结

k8s api 对象

容器(container)

容器的本质是一个进程.

这个进程和普通进程的区别:

  • 独立的 Namespace(通过 linux namespace 实现);
    • PID;
    • 文件视图;
    • 网络;
    • 主机名
    • User;
    • IPC
  • 有限的资源使用权限(通过 linux cgroup 实现);
    • CPU
    • 内存
    • 磁盘
    • 网络带宽

pod

一个应用中不同的进程间可以有亲密关系, 比如说需要频繁通信,需要共享某些资源(网络,储存等),这些进程需要被运行在相同的 Node(宿主机)上,为了描述这种关系,k8s 将有亲密关系的 container 组织成一个 pod.

根据类型不同,pod 可细分为:

  • Pod
  • Job
  • CronJob
  • StatefulSet
  • DaemonSet

deployment

一个 pod 往往有多个实例,它们组成了一个 deployment

service

我们需要通过一个固定的 IP 地址和端口以负载均衡的方式访问 deployment 或者一组 pod,于是就有了 Service.

ingress

Ingress 是全局的、为了代理不同后端 Service 而设置的负载均衡服务.

Secret 和 ConfigMap

Secret 和 ConfigMap 都是为了给 pod 提供配置信息.

实现方式:

  1. k8s 将 Secret/ConfigMap 中配置的信息保存在 Etcd 中;
  2. pod 中声明 projected 类型的 Volume,并配置 sources 为上一步中配置的数据;
  3. container 将 2 中定义的 Volume 映射某个路劲下;

k8s 组件

组件关系图

posted @ 2020-10-12 09:33  Aloe_n  阅读(445)  评论(0编辑  收藏  举报