- 王渊命 @jolestar 青云容器平台负责人,多栖程序员
- java/go/python
- 微博/通讯工具/协作工具/容器/云
- 技术写作者,https://jolestar.com
- Kubernetes "布道师",《Kubernetes 完全教程》作者
- Kubernetes 为何而生
- Swarm, Mesos, Kubernetes
- Kubernetes 的架构
- Pod
- 部署架构和逻辑架构
- API Spec Object
- 架构优劣
- 云发展到一个新阶段
- 按需的资源
- 对应用无侵入
用户从关注资源的运维转向关注应用的开发运维成本
- 容器的普及奠定了基础
- 应用安装包标准化
- 进程管理标准化
用户需要一套系统来管理大规模的容器
我们需要一种 面向应用(Application Oriented) 的系统来降低服务端应用的开发部署和运维成本
We wanted people to be able to program for the data center just like they program for their laptop --Ben Hindman
我们再引申一下,从开发延伸到部署运维
We wanted people to be able to manager app for the data center just like they manager app on their laptop
- Docker Swarm
- Mesos
- Borg, Omega, and Kubernetes
- 去中心化
- 组件内置
- 配置简易
define a minimal interface that enables efficient resource sharing across frameworks, and otherwise push control of task scheduling and execution to the frameworks
- 资源共享
- 编程框架
- 分布式调度
Kubernetes is not a mere “orchestration system”; it eliminates the need for orchestration. The technical definition of “orchestration” is execution of a defined workflow: do A, then B, then C. In contrast, Kubernetes is comprised of a set of independent, composable control processes that continuously drive current state towards the provided desired state. It shouldn’t matter how you get from A to C: make it so.
- Borg: Container,BatchJob&Service
- Omega: State store,Multi control-plane
- Kubernetes: ApiServer,Pod,Network,Storage,OpenSource
- Kubernetes 的 Pod
- Kubernetes 的部署架构
- Kubernetes 的逻辑架构
- 启动 pause 容器
docker run -d --net=none --name pause busybox sleep 999999
- 通过 CNI 创建网络,然后移动到 pause 的 netns
- 启动业务容器,关联到 pause
docker run -d --net=container:pause --name web nginx
docker run -d --net=container:pause --name sidecar mysidecar
- 共享网络
- 共享 Volume
- 共享 IPC
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
- name: sidecar
image: mysidecar
- Declare,Observe,React
- 一个状态存储
- 多个控制器
- Core
- Pod/Container/Volume
- Service 一组 Pod 对外提供能力的抽象
- Apps
- Replica: 控制 Pod 的副本
- Deployment: 控制 Replica 的版本(滚动升级)
- DaemonSet: 绑定 Pod 和 Node 关系
- StatefulSet: 控制 Pod 的网络标志以及存储
- Autoscaling: HPA 根据监控条件控制 Deployment 的副本数属性
- 自愈 (最终一致)
- 组合 (低级组件组合成高级组件)
- 面向未来 (API 定义目标,而不是过程)
apiVersion: vx
kind: ServiceSLA
metadata:
name: myservice-sla
agreement:
success: 999
averageLatency: 200ms
cost: x$/h
selector:
app: myapp
- 同步或者依赖操作
- 非状态操作
- 配置管理
- 服务依赖
- Mesos 架构以及源码浅析
- Borg, Omega, and Kubernetes
- Declarative application management in Kubernetes
- The State of the Kubernetes Ecosystem
- Kubernetes lifecycle of a pod
- Kubernetes 完全教程
- Swarm的进化和大规模应用