Gists

Kubernetes

Kubernetes,K8s,是一个基于容器的集群管理平台,主要用于控制容器

Kubernetes

Kubernetes,K8s,是一个基于容器的集群管理平台,主要用于控制容器

  • 可集群:容器的移动或删除,服务对外暴露的静态 IP 不变
  • 扩缩容:根据资源负载,自动调整容器副本数
  • 自修复:自动重启容器,或选择新的工作节点
  • 零或限制:通过亲缘性控制容器运行在指定机器

整体架构

一个 K8s 系统,常常包括一个 Master 节点,用于管理和控制多个 Node 计算节点。

Master 节点大体包括:

  • API Server:系统对外接口,比如用于处理外部的命令行交互
  • Scheduler:调度器,用于分配 Pod
  • Controller Manager:控制器,跟踪节点状态,复制 Pod
  • ETCD:分布式数据存储,存集群配置文件;可用于服务发现(保证一个集群中的不同进程可以互相找到并建立链接),并通过 Raft 协议使各个节点的状态保持一致。

Node 节点由许多的 Pod 组成,每一个 Pod 都是集群中的一个进程。Node 通过以下几个组件管理 Pod:

  • Docker:容器运行时,用于拉取、创建、启动镜像
  • Kubelet:用于中转 API Server 和 Docker 的交互行为,以进行 Pod 的创建、删除、修改、监控
  • Kube-proxy:用于 Pod 的代理(?)
  • Fluentd:用于日志收集、储存和查询
  • Service:一组相同功能的 Pod 可以通过 Service 提供对外的接口

Pod 写入磁盘的数据可能随时会丢失,它自身也随时可能被重启,如内存耗尽,进程崩溃,或存活指针返回失败。Pod 重启的时间以指数时间避退,直到满 5 分钟。

常用子指令

  • Apply:从配置文件更新对象,如 kubectl apply -f x.yaml;
  • Delete:删除对象,如 kubectl delete deploy x;
  • Describe:获取对象信息,如 kubectl describe pod x;
  • Exec:执行容器的指令,如 kubectl exec -it pod x bash;
  • Get:获取对象状态,如 kubectl get pods(获取所有 pods 状态)、kubectl get svc(获取所有服务及其状态,如端口和所在集群 IP);

Copyright © 2024 Lionad - CC-BY-NC-CD-4.0