Kubernetes学习笔记-未整理

这篇博客详细介绍了Kubernetes的学习笔记,包括Kubernetes的架构、组件、设计理念和核心API对象。它深入讲解了Master和Node的角色,Pod、Service、ReplicationController、Deployment等核心概念,以及网络、存储、调度和扩展性。博客还探讨了Kubernetes的网络原理、资源对象和生命周期管理,强调了Kubernetes在微服务中的应用和集群管理策略。
摘要由CSDN通过智能技术生成

Kubernetes学习笔记

标签:Kubernetes 学习笔记

原文:https://github.com/wtysos11/NoteBook/blob/master/微服务/Kubernetes学习笔记.md

来源

Kubernetes架构

组件介绍

Master

Master节点上面主要由四个模块组成:APIServer、scheduler、controller manager、etcd

  • APIServer:APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构图中所示,kubectl(Kubernetes提供的客户端工具,该工具内部就是对Kubernetes API的调用)是直接和APIServer交互的。
  • schedule:scheduler的职责很明确,就是负责调度pod到合适的Node上。如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是Pod和一个Node的绑定,即将这个pod部署到这个Node上。Kubernetes目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法。
  • controller manager:如果说APIServer做的是“前台”的工作的话,那controller manager就是负责“后台”的。每个资源一般都对应有一个控制器,而controller manager就是负责管理这些控制器的。比如我们通过APIServer创建一个pod,当这个pod创建成功后,APIServer的任务就算完成了。而后面保证Pod的状态始终和我们预期的一样的重任就由controller manager去保证了。
  • etcd:etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。
Node

每个Node节点主要由三个模块组成:kubelet、kube-proxy、runtime。

  • runtime指的是容器运行环境,目前Kubernetes支持docker和rkt两种容器。
  • kube-proxy:该模块实现了Kubernetes中的服务发现和反向代理功能。反向代理方面:kube-proxy支持TCP和UDP连接转发,默认基于Round Robin算法将客户端流量转发到与service对应的一组后端pod。服务发现方面,kube-proxy使用etcd的watch机制,监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系,从而保证了后端pod的IP变化不会对访问者造成影响。另外kube-proxy还支持session affinity。
  • kubelet:Kubelet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上面的所有容器,但是如果容器不是通过Kubernetes创建的,它并不会管理。本质上,它负责使Pod得运行状态与期望的状态一致。
Pod

Pod是k8s进行资源调度的最小单位,每个Pod中运行着一个或多个密切相关的业务容器,这些业务容器共享这个Pause容器的IP和Volume,我们以这个不易死亡的Pause容器作为Pod的根容器,以它的状态表示整个容器组的状态。一个Pod一旦被创建就会放到Etcd中存储,然后由Master调度到一个Node绑定,由这个Node上的Kubelet进行实例化。

每个Pod会被分配一个单独的Pod IP,Pod IP + ContainerPort 组成了一个Endpoint。

Service

Service其功能使应用暴露,Pods 是有生命周期的,也有独立的 IP 地址,随着 Pods 的创建与销毁,一个必不可少的工作就是保证各个应用能够感知这种变化。这就要提到 Service 了,Service 是 YAML 或 JSON 定义的由 Pods 通过某种策略的逻辑组合。更重要的是,Pods 的独立 IP 需要通过 Service 暴露到网络中

概述

Kubernetes的来源:Borg的一个开源版本,google久负盛名的一个内部使用的大规模集群管理系统。基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。

它是一个开放的语言,无论是java、Go、C++还是用Python编写的服务,都可以毫无困难地映射为Kubernetes的Service,并通过标准的TCP通信协议进行交互。

Kubenetes架构

核心组件:

  • etcd保存了整个集群的状态(key-value型的数据库)
  • apiserver提供了资源操作的唯一入口
  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。
  • scheduler负责资源的调度,按照预先的调度策略将Pod调度到相应的机器上。
  • kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理
  • Container runtime负责镜像管理以及容器的真正运行
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡。

Kubenetes通信方式

比较简洁的图

简图

master架构

master架构

node架构

node-arch

kubernetes的设计理念和功能是一个类似于linux的分层架构,如下图所示

layer

  • 核心层(nucleus):Kubernetes最核心的功能,对外提供API构建高层应用,对内提供插件式应用执行环境。
  • 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)、Service Mash(部分位于应用层)
  • 管理层:系统度量(如基础设施、容量和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)、Service Mesh(部分位于管理层)
  • 接口层:kubectl命令行工具、客户端SDK以及集群联邦
  • 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以分为两个范畴。在kubernetes外部是日志、监控、配置管理、CI/CD、WorkFlow、Faas、OTS应用、ChatOps、GitOps、SecOps等。在Kubernetes内部是CRI、CNI、CSI、镜像仓库、Cloud Provider、集群自身的配置和管理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值