文章目录
Kubernetes官网
1.Kubernetes 是一个开源系统,用于容器化应用的自动部署、扩缩和管理。
Kubernetes 将构成应用的容器按逻辑单位进行分组以便于管理和发现。
Kubernetes通俗理解
1.简单理解:我们可以认为Kubernetes是就是对集群节点上的容器的一个编排,部署等管理;
2.另外可以对集群节点上的服务进行监控监控|服务发现等操作
3.Kubernetes是对docker Container的一个编排和管理
Kubernetes与云原生
云原生官网
1.CNCF(The Cloud Native Computing Foundation):云原生计算应用,支持·编排容器化微服务架构;
2.云:公有云,私有云,华为云,百度云,阿里云等等各种云,但是基于各种云的不同,需要统一个标准,
所以慢慢有了有一个CNCF,CNCF的出现,使得项目不受各种云(公有云,私有云,混合云,阿里云等)的限制,可以进行无缝的迁移;
这样你的项目,不管是在本地还是各种云上,部署和运行都不受限制;
3.Kubernetes是成为云原生时代解决上面问题的基础设施;
Docker Compose与 Kubernetes 以及Docker Swarm
1.Docker Compose是单机容器编排技术;
2.kubernetes和Docker Swarm都是多机容器编排技术;
3.目前Kubernetes是比较主流的多机容器编排技术;
Kubernetes架构组件设计
Pod
https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/
1.Kubernetes管理的最小单位为Pod(荚),一个Pod包含一个或多个Container;
ReplicaSet ---->Pod 的操作
https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
1.我们可以通过ReplicaSet对Pod进行管理,比如复制Pod等等
Deployments —>ReplicaSet和Pod的管理
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
1.Deployments提供ReplicaSet和Pod的声明以及相关的管理操作;
Label
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
1.Labels are key/value pairs that are attached to objects, such as pods.
Labels是一些打在组件对象上的key/value的键值对,比如Pods;
2.Labels 标签可以打在Pod ReplicaSet Deployments等任意组件上;
针对共同的标签属性,我们可以用来进行标签管理;
Service
https://kubernetes.io/docs/concepts/services-networking/service/
相同label的我们称之为sevice
1.An abstract way to expose an application running on a set of Pods as a network service.
Service是暴露具有相同label属性的正在运行的一系列Pod作为网络服务的一种抽象方式;
Selector
https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
1.service对上面label定义的标签的引用;
2.某个组件需要引用别的组件,就使用这种方式;
Nodes
https://kubernetes.io/docs/concepts/architecture/nodes/
1.A node is a worker machine in Kubernetes
一个Node就是Kubernetes中的一个Worker节点,相当于就是一台机器;
Kuberctl -->Kubernetes操作的组件
Master Node[主节点]
1.Kuberctl:是对Kubernetes操作的客户端组件
2.对于Kuberctl的操作,主节点(Master Node)会有认证和授权,确认当前请求的客户端是否有操作的权限;
3.主节点(Master Node)上对于Kuberctl同样会有相关的API Server服务,来响应Kuberctl客户端的请求;
4.Schedule策略:比如我们通过Kuberctl请求Master主节点,要将那个Pod运行在那个Worker节点上等等,
或者要在那个Workder上创建其他的什么组件等
5.Controller Manager:主要是比如上面的Schedule策略选定之后,如何请求管理
6.还有比如DNS组件等等
7.Dashbaord组件
Workder Node[Worder节点]
1.每个子节点上会有Kuber Proxy组件,用于处理主节点(Master Node)Controller Manager的请求;
2.Kubelet:可以用来创建Pod
3.鉴于Pod是包含Container的,因此,每个Worker节点,都需要Docker(Engine)的安装;
4.另外对于每台机器的请求数量的统计,我们可以使用etcd组件去统计
备注
1.组件很多,暂且不再过多叙述;
官网架构图
https://kubernetes.io/docs/concepts/architecture/cloud-controller/
1.里面东西,有些我们能理解,有些不能理解暂时先放一下;