pods , k8s 的核心, 所有的的操作都是围绕 pod , pod 可以认为是多个容器的捆绑。pod 里的容器里共享 cpu 网络 存储。
, pod 可以设置环境变量, 可以在容器启动前, 关闭后等执行钩子(函数,命令),
, pod 可以检查容器健康性, 一个 node 里可以有多个同样的 pod
labels 是许许多多的 key-value , 可以用key 来给对象命名, 这样比较容易找到,识别对象。 也可以在命令行中做变量
比如: environment in (production, qa) ; !partitio ; labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29
kubectl get pods -l environment=production,tier=frontend 等
namespace 是一组资源和对象的结合/容器/框架, pods, service 等等(除了node 和 persisitendVolumes)都属于某个 namespace. 默认有:default 和 kube-system
两个资源组(kubectl get namespaces)
Replication Controller 是用来保证 pod 定额数量运行的一个容器。 有点类似进程管理器,但是它管理整个k8s里所有的 node 里 所有的 pod
R/C 工作:1. 根据pod模板创建 pod 2. Rescheduling / Scaling / Rolling updates : 重新规划 / 缩放 / 动态更新
Node 正真的主机, 每个node 至少要运行 docker/rkt , kubelete , kube-proxy . Node Controller 负责:1.维护node 状态, 2. 与Cloud Provider同步Node
3. 给Node分配容器CIDR 4. 删除带有NoExecute taint的Node上的Pods
node 包含几个信息:1)地址:包括hostname、外网IP和内网IP
2) 条件(Condition):包括OutOfDisk、Ready、MemoryPressure和DiskPressure
3) 容量(Capacity):Node上的可用资源,包括CPU、内存和Pod总数
4) 基本信息(Info):包括内核版本、容器引擎版本、OS类型等
node 可以设置成不可调度: kubectl cordon $NODENAME
ReplicaSet 下一代的 R C
Service 服务, 把相同的pod 统一起来对外服务, Services 通过 kube-proxy 起作用
服务发现: 环境变量 / DNS
Volumes 存储,就是把磁盘挂载到容器里, 在 pod 里得定义,与containers 关联,可以让 容器之间共享数据。
类型有 : emptyDir / hostPath / gcePersistentDisk / EBS / nfs 等
PersistentVolume PV/PVC/StorageClass
Deployment 部署, 就是创建几个个RS (pod) , 定义容器,定义存储 等。 部署的操作是kb中应用最广泛的。 学会编写 deploy spec 文件(yaml)
https://www.kubernetes.org.cn/deployment 参考