kubernetes相关概念

最近自己在学习kubernetes,这里记录一下笔记。
概念:

一、什么是K8s?

是一组服务器集群,K8s所管理的集群节点上的容器。

二、K8s功能:

1.自发修复
2.弹性伸缩:实时根据服务器的并发情况,增加或缩减容器数量
3.自动部署:要借助yaml才能实现自动部署,
4.回滚:
5.服务发现和负载均衡
6.机密(实现加密操作)和配置共享管理(做一个配置,它能够共享到所有的节点里面)

三、K8s集群分为两类节点:

master node 主节点(负责做管理调度的,不具体来跑业务、跑服务)
work node 工作节点

master节点的组件(程序):
①apiserver:接受客户端操作k8s的指令(比如说关闭、启动都需要apiserver)
②scheduler:从多个worker node节点的组件中选举一个来启动服务
③controller manager:向woker node节点的kubelet发送指令的 ④etcd:k8s的数据库(仅仅是用来做存储的,如果说想用mysql来做中间的存储也是可以的,只是需要做一些额外的配置):用来注册节点、服务、记录账户…

node节点的组件(程序):
①kubelet:向docker发送指令管理docker容器的(例如启动镜像)
②kubeproxy:管理docker容器的网络(比如说分配个IP地址啊,暴露端口啊)
③runtime:runtime指的是容器运行环境,目前Kubernetes支持docker和rkt两种容器。

四、Kubernetes最最最核心的概念:

1.pod是k8s最小的部署单元,一个pod中可以有一个或者多个容器,
pod又称为容器组。

Pod生命周期:
  Pod被分配到一个Node上之后,就不会离开这个Node,直到被删除。当某个Pod失败,首先会被Kubernetes清理掉,之后ReplicationController将会在其它机器上(或本机)重建Pod,重建之后Pod的ID发生了变化,那将会是一个新的Pod。所以,Kubernetes中Pod的迁移,实际指的是在新Node上重建Pod。

*注意:k8s中是否能直接启动容器?不能。在我们k8s里面,它的最小调度单位是pod,而不是容器。

2.Controllers:控制器,控制pod,启动、停止、删除

3.service:服务

将一组pod关联起来,提供提个统一的入口,即使pod地址发生改变,这个统一入口也不会变化,

可以保证用户访问不受影响。

4.label:就是一个标签。

一组pod有一个统一的标签

service是通过标签和一组pod进行关联的

5.namespace:名称空间

用来隔离pod的运行环境【默认情况下,pod是可以互相访问的】

第一种使用场景:为不同的公司提供隔离的pod运行环境

第二种使用场景:为开发环境、测试环境、生产环境分别准备不同的名称空间进行业务隔离(创建测试、运维、测试三个命名空间,切换上下文,开发人员就只能看到开发命名空间的pod,这样就不会造成影响,互不干扰)

传统业务架构向k8s集群转型 k8s集群概念_传统业务架构向k8s集群转型