每天5分钟学习k8s,第二章重要的概念

在实践之前,必须先学习k8s的几个重要概念,他们是组成k8s的集群基石

1. Cluster:计算、存储和网络资源的集合,k8s利用这些资源运行基于容器的应用。

2. Master:主要工作时用来做调度使用的,管理各个节点的生命周期

3. Node:负责是容器的应用运行。由Master管理,Node监控Pod的情况,并及时反馈。

4. Pod: k8s的最小单元,每一个Pod有一个或多个容器。Pod的一个整体在Node上运行,并被Master调度。

k8s 引入 Pod 主要是两方面

4.1 可管理性:pod提供比容器更高的抽象,将他们封装一个部署单元中,k8s以pod最小单元进行调度,扩展,资源共享,管理生命周期

4.2 通信资源和资源共享:pod中的所有容器都是用同一个namespace,相同的Ip地址和Port空间。同样的资源共享使用的volume到pod。

pods有两种使用的方式:

1) 运行单一容器:one-container-per-Pod是K8s经常用到的模型。你可以理解为一个pod就是一容器。

2) 运行多个容器:如果你容器和容器直接需要直接资源共享的话,这模型可以更好的解决问题。举个官网的例子

每天5分钟学习k8s,第二章重要的概念_第1张图片

File Puller会定期从外部的Content Manager中拉取最新的文件,将其存在共享的volume中。web Server从volume读取文件,Response Consumer的请求。

这两个容器有紧密的协作,他们一起为Consumer提供最新的数据;同时也通过volume共享数据。

5 Controller

k8s通常不能直接创建pod,而是通过Contoller来管理Pod。在k8s里面又提供了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等。

1) Deploymen是最常用的Controller,比如在线教程中就是通过创建Deploymen来部署应用的。Deploymen可以管理多个Pod副本。并确保Pod按照期望的状态运行。

2) ReplicaSet实现多个Pod的多副本管理。使用Deploymen时会自动创建ReplicaSet,也就是说Deploymen是通过ReplicaSe来管理多个副本的。

3) StatefuleSe:能够保证Pod整个生命周期名称是不变的。

4) Job 用于运行结束就删除的应用,而其他Controller中的Pod通常是长期使用运行的。

6 Service

Deploymen 可以部署doge副本,每个Pod都有自己的Ip,外部是如何访问这些副本呢?

通过Pod的IP嘛?

要知道Pod很可能会被频繁地删除和重启,他们的ip是会变化,用ip来访问不太现实。所以就有了Service,k8s Service定一个外界访问一组特定的Pod的方式。Service有自己的Ip和端口,Service为Pod提供了负载均衡。

k8s运行Pod与访问容器pod这两项任务分别有Contoller和Service执行

7 Namespace

和docker一样使用Namespace进行隔离Controller、Pod等资源。

k8s默认创建两个Namespace

default:创建资源时如果不指定,将被放到这个Namespace中

kube-system:k8s自己创建的系统资源将放到这个Namespace中。

你可能感兴趣的:(每天5分钟学习k8s,第二章重要的概念)