理解Kubernetes理念和架构
传统部署VS虚拟化部署VS容器部署
企业容器云平台架构
Docker编排服务:三驾马车
DOCKER SWART——docker
MESOS——APACHE
kubernates——Google
Kubernates组件架构
Kubernates Master架构
Kubernetes Master组件介绍
API Server
Kubernetes API接口,主要处理 REST操作以及更新Etcd中的对象。所有资源增删改查的唯 一入口。在设计上考虑了水平扩缩的需要,可以构建集群。
Scheduler
集群的资源调度组件,用于绑定Pod到Node上。
Controller Manager
控制器组件,资源对象的自动化控制中心,例如Node Controller、Endpoints Controller 等。
Etcd
Etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的 后台数据库。所有持久化的状态信息存储在Etcd中。
Kubernetes Node架构
Kubernetes Node组件介绍
Kubelet
一个在集群中每个节点上运行的代理。用于管理Pods以及容器、镜像、Volume等,实现对 集群对节点的管理。
Kube-proxy
kube-proxy 是集群中每个节点上运行的网络代理,实现 Kubernetes Service 概念的一部分。 提供网络代理以及负载均衡,kube-proxy 维护节点上的网络规则。这些网络规则允许从集 群内部或外部的网络会话与 Pod 进行网络通信。
Docker Engine
负责节点的容器的管理工作,Kubernetes 支持多个容器运行环境: Docker、 containerd、 cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。
Google内部容器平台Borg
深入理解Kubernetes架构
kubelet的监听端口
- –port int32
kubelet 服务监听的本机端口号。(默认值为 10250)已弃用: 在 –config 指定的配置文件中进行设置。
curl http://127.0.0.1:10248/healthz
–healthz-bind-address 0.0.0.0
用于运行 healthz 服务器的 IP 地址(对于所 有 IPv4 接口,设置为 0.0.0.0;对于所有 IPv6 接口,设置为::
)(默认值为 127.0.0.1) https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/。)–healthz-port int32
本地 healthz 端点使用的端口(设置为 0 表示禁用) (默认值为 10248)
kube-proxy的监听端口
curl http://127.0.0.1:10256/healthz
–healthz-bind-address 0.0.0.0 默认值: 0.0.0.0:10256
服务健康检查的 IP 地址和端口(对于所有 IPv4 接口设置为 0.0.0.0,对于所有 IPv6 接口设置为 ::)–healthz-port int32 默认值: 10256
绑定健康检查服务的端口。使用 0 表示禁用。
curl http://127.0.0.1:10249/metrics
–metrics-bind-address 0.0.0.0 默认值: 127.0.0.1:10249
metrics 服务器要使用的 IP 地址(所有 IPv4 接口设置为 0.0.0.0,所有 IPv6 接口设置为::
)–metrics-port int32 默认值: 10249
绑定 metrics 服务器的端口。使用 0 表示禁用。
应用容器化(Docker)
不可变基础设施(immutable infrastructure)
Docker镜像构建最佳实践
将应用迁移至Kubernetes
将应用迁移到Kubernetes中
容器放置在Pod中
将单个容器或者有依赖 关系的多个容器封装到 Pod中。
控制器管理Pod
使用不同的控制器RC、 RS、Deployment、 Job、Cronjob管理Pod 运行。
管理Pod网络访问
通过Ser v ice、 Endpoint、Ingres s管 理Pod的网络访问。
管 理 P o d 数 据 存 储
通过Volume、PV、 PVC、Storage Class 管理Pod的数据存储。
Kubernetes的最小单位Pod
- Pod 里只运行一个单独容器 “one- container-per-Pod”
- Pod 中运行多个有依赖关系的容器
Pod、容器、Volume
Pod的定义
1 | apiVersion: v1 # 版本号 |
YAML编写技巧
缩进
- YAML使用一个固定的缩进风格表示数据层结构关系。 每个缩进级别由两个空格组成
- 不要使用tabs
冒号
1 | YAML my_key: my_value first_level_dict_key: second_level_dict_key:value_in_second_level_dict |