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 提供配置信息.
实现方式:
- k8s 将 Secret/ConfigMap 中配置的信息保存在 Etcd 中;
- pod 中声明 projected 类型的 Volume,并配置 sources 为上一步中配置的数据;
- container 将 2 中定义的 Volume 映射某个路劲下;
k8s 组件
组件关系图