Kubunetes学习总结之基本原理

本文主要介绍了Kubernetes的基本原理,包括节点自我注册、Pods、Replication Controller、Services、Volume、Secrets、命名空间和Annotation等核心概念。Kubernetes通过Pods作为最小管理单元,配合Replication Controller保证副本数量,Services提供抽象的访问方式,Volume实现数据持久化,而Secrets则用于安全地存储敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kubernates 原理:

   来源于https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/user-guide/README.md


(图片来源于网络)

1) 概述: 所有的containers都运行在pods中.一个pod可以主持一个或多个Containers(必须同一台机器且共享相同的资源).如果container运行失败,会有node的agent,即kubelet,来自动重启. 但如果pod运行失败,则只能通过replication controller(简称rc)来自动控制. 所以关系可以理解为: kubelet---->container ,  rc----->pod.

      kubernetes为每一个pod分配一个ip. kubernetes后台利用Round-Robin算法策略来均衡pod负载,当一个pod被另一个pod替换时,kube proxy保持ip稳定.

     每一个kubernetes的资源,如pod,都带有一个URI和UID来标示,URI记录资源类型,名称,命名空间等. 名称在命名空间中时唯一的. UID在任何时候,任何地点都是唯一的.

2)Cluster 组成 

   Master : Master组件用于提供cluster的控制.例如相应cluster的全局决定. Master理论上可以运行在任何节点,但通常将所有的Master(目前都只有一个)运行在相同的独立的VM上,与其他的user containers分开.

   Node : 维持pods的运行并为pods提供运行环境.

3)Node

   Node是Kubernetes的工作者,之前也叫Minion. Node可以是一个VM或者物理主机.每个节点有运行PODs所必须的服务,通过Master组件来管理. 这些服务包括docker, kubelet 和network proxy.

Node Phase: 

         Pending:新节点正在创建和配置   Running: 节点创建成功,kubernetes组件正在运行.  Terminated: 节点从cluster中移除. 在此node中的所有pods都会被remove.

Node Condition:  节点条件的状态分为true,false,unknow. 通过json封装.

"conditions": [
  {
    "kind": "Ready", #条件类型
    "status": "True", #条件状态
    },
]
Node Management :

kubernetes会不断通过metadata.name属性检查节点的有效性,即看它是否具备运行条件.直到被删除或运行.


当前有三个与Node交互的组件: NodeController, kubelete 和 kubectl


NodeController时kubernetes master上管理Node的组件. 它有两个功能,cluster间的节点同步和单个节点的生命周期管理.

NodeController本身不提供节点,只给创建的节点建立一个representation.


Self-Registration of Nodes

For self-registration, the kubelet is started with the following options:

  • --api-servers= tells the kubelet the location of the apiserver.
  • --kubeconfig tells kubelet where to find credentials to authenticate itself to the apiserver.
  • --cloud-provider= tells the kubelet how to talk to a cloud provider to read metadata about itself.
  • --register-node tells the kubelet to create its own node resource.

4)Pods  类似进程的东西,内部是一个container.是kubernates描述中的最小单位。 

5)label/selector  label顾名思义就是给pod一个标签,其实作用就是分组,利用selector把相同label的过滤出来.所以label是不唯一的。

6)replication controller  用于控制pod的副本个数,推荐使用这种方式创建pod,可以自动控制pod的数量保持恒定。

7) services  定义了一组pods,并且确定了访问他们的方式,如IP和DNS。services是抽象的,并不是实际存在的,5)中所讲的selector就是用来给pods分组,比如有一个buy的标签,分出了一组pods,那么这一组pods就属于一个service,他们提供统一的服务,又有一组sell分出了另外一组pods,他们属于另一个service,然而pods是动态的,他们可以被创建或者消亡,但服务员(sell pods)不关心客户(buy pods)是谁,客户也不关心服务员是谁,他们只需要得到服务就可以了,所以service的作用就是将一组相同标签的pods进行抽象,调用的时候不用关心具体是哪一个pod。Service收到Kube-proxy发来的消息,重定向到具体的pod端口,具体到哪一个是随机的,利用session affinity来决定。


7) Volume  一个挂载在外部的目录,通过在外部添加文件到这个目录,添加进去的文件会自动映射到docker内部的指定目录下。反过来也是一样。通过常用来做数据存储和交换。

8)Secret 用于存储密码等敏感信息。用户和系统都可以创建secret。

9)Name 就是pod的名字

10)Namespace 命名空间,通常一个集群可能有多个用户在跑,就可以用命名空间区分,不会互相干预,操作时需要加上--namespace=XXXX

11)Annotation 附注,添加label没有表达的额外信息。















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值