笔记用于知识组织, 语言尽量精炼, 直达问题核心并提供关键操作关联资源. 不是教程
-
-
Kubernetes(k8s)是一个容器应用管理系统, 用于帮助用户自动化的完成大部分应用及其基础设施管理工作.
Kubernetes一方面对底层基础设施资源, 包括主机, 网络, 存储进行抽象, 向应用层暴露一个资源池; 另一方面对应用层的可容器化应用进行自动化的管理, 包括但不限于编排, 调度, 部署, 自动伸缩, 滚动更新, 故障恢复等; 更进一步对微服务架构应用提供了部分基本的服务治理功能, 包括服务注册与发现, 配置管理, 反向代理及软负载均衡等.
用户声明期望状态, 系统自动对实际状态进行收敛并最终符合期望状态 的核心理念.
-
kubernetes主机集群逻辑上分为master节点和node节点. master节点是集群全局管控节点. node节点是集群工作负载管理及实际负载运行节点. 二者分别运行着若干kubernetes组件进程用于实现对应节点角色的功能.在master节点上运行着:
etcd: 分布式一致性kv存储解决方案, 主要用于存储k8s资源对象定义.
kube-apiserver: 集群功能接口访问入口, 集群通信中枢.
kube-controller-manager: 控制器集合, 调整资源对象的实际状态以期符合用户提交的预期状态.
kube-scheduler: 决定新Pod运行于哪个node节点.
在node上运行着:
kubelet: Pod声明周期管理, 向apiserver上报node, pod等状态
kube-proxy: 集群流量管理, 用于为应用提供方向代理, ipvs, iptables, userspace proxy
另外集群中还可能运行一些其他Addon进程以提供额外功能:
core-dns: dns服务
dashboard: 为k8s功能访问提供web ui
-
Kubernetes对外暴露了一组声明式API, 用于用户访问系统功能. 该组API由kube-apiserver进程以restful接口的形式提供, 其核心就是一组资源对象, Kubernetes利用这组资源对象完成了对基础设施, 应用管理任务及其他功能的抽象. 使用Kubernetes的功能实际上就是完成对这些资源对象的增删查改.
基本资源对象包括:
Node: 集群节点
Namespace: 多租户资源隔离机制
Pod: 应用, 容器组
Volume: 存储卷
Service: 服务, 一组应用副本访问入口
常用控制器资源对象:
Deployment & ReplicaSet: 无状态应用管理
StatefulSet: 有状态应用管理
DaemonSet: 每Node后台服务管理
Job & CornJob: 批处理任务及定时任务管理
-
-
-
全部基于Linux环境部署与维护, 为了记录方便不考虑其他环境
-
kubectl
-
Kubernetes安全管理
基于双向认证的https通信
RBAC
准入任务管理
-
Kubernetes网络管理
flannel
-
Kubernetes存储管理
Volume, PersistenceVolume, PersistenceVolumeClaim, StorageClass, rook项目
-
监控
prometheus
-
日志
efk
-
故障排查定位
kube-debug
各系统组件日志
-
-
- Pod: 容器声明周期, 存活及就绪探针, 资源分配
- Service: ClusterIP, NodePort, LoadBalancer, Headless service
- Deployment & ReplicaSet
- StatefulSet
- DaemonSet
- Job & CronJob
- Ingress
-
- CRD
- Admission Control
-
- 容器, docker, 容器运行时
- kubeadm
- ectd
- kube-apiserver
- kube-controller-manager
- kube-scheduler
- kubelet
- kube-proxy
-
- spring-cloud-kubernetes
- istio
-
基于kubernetes的devops流水线
gitops实践
各大企业是如何利用k8s解决开发, 测试, 部署问题的