Kubernetes | 入门篇 |(一)

29 篇文章 0 订阅
27 篇文章 0 订阅

                       --昨夜西风凋碧树,独上高楼,望尽天涯路

Kubernetes是Google的一套容器编排框架,下面先了解以下K8s的一些重要概念以及组件

  • Cluster

Cluster就是Kubernetes集群,是计算和存储的集合,Kubernetes利用这些资源运行各种基于容器的应用

  • Master

Master负责调度整个Cluster中的资源。通常使用多个Master来实现高可用

  • Node

Node的作用是运行容器。Node由Master管理,Node负责监控并且汇报容器的状态,同时根据Master的要求管理容器的生命周期。

  • Pod

Pod是Kubernetes的最小工作单元,每个Pod包含一个或者多个容器,Pod中的容器作为一个整体被Master调度到Node上运行

Pod是对容器的一个更高层次的封装,将一些紧密联系的容器封装到一个Pod中。Pod中的所有容器使用同一个namespace,即相同的IP地址和Port空间,可以直接使用localhost通信。并且这些容器可以共享存储。

  • Controller

Kubernetes通过Controller来创建Pod。Controler中定义了Pod的部署特性。Kubernetes提供了很多Controller,例如:Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等。

1)Deployment是最常见的Controller。Deployment可以管理Pod的多个副本,并确保Pod按照期望的状态运行

2)ReplicaSet在使用Deployment的时候回自动创建,实际上Deployment是通过ReplicaSet来管理Pod的多个副本的,Deployment是ReplicaSet的更高抽象,一般情况下我们不需要直接使用ReplicaSet

3)DaemonSet用于每个Node最多只运行一个Pod副本的场景

4)StatefuleSet能够保证Pod的每个副本在整个生命周期中名称是不变的,其他的Controller不提供这个功能。

5)Job运行结束就删除的应用,而其他的Controller中的Pod通常是长期持续运行

  • Service

当Pod被频繁的销毁和重启的时候,它们的IP会发生变化,所以通过IP来访问Pod不现实。Kubernetes Service定义了外界访问一组特定Pod的方式。Service由自己的IP和端口,Service为Pod提供了负载均衡

  • Namespace

Namespace可已经一个物理的Cluster逻辑上划分为多个虚拟的Cluster,每个Cluster就是一个Namespace。不同的Namespace里的资源是完全隔离的。

  • 组件

Master节点:

1)kubelet:运行在Cluster的所有节点上,负载启动Pod和容器

2)kubeadm:用于初始化Cluster

3)kubectl:Kubernetes的命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

4)kube-apiserver(API Server):提供HTTP/HTTPS RESTFul API,API Server是Kubernetes Cluster的前端接口,各种客户端工具以及Kubernetes的其他组件可以通过管理Cluster的各种资源

5)kube-scheduler(Scheduler):Scheduler是调度器,负责决定将Pod放在哪个Node上运行。Scheduler会在调度的时候充分考虑Cluster的拓扑结构,当前各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。

6)kube-controller-manager(Controller Manager):负责管理Cluster的各种资源,保证资源处于预期的状态

7)etcd:etcd负责保存Kubernetes Cluster的配置信息和各种资源的状态信息。当数据发生变化的时候,etcd会快速的通知Kubernetes相关组件

8)Pod网络:Pod之间要能够相互通信,Kubernetes Cluster必须部署Pod网络,flannel就是其中一个可选方案

Node节点:

1)kubelet:kubelet在Node节点中充当这agent,当Scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(image、Volume等)发送给该节点的kubelet,kubelet根据这些信息创建和运行容器,并向Master报告运行状态

2)kubeadm:用于初始化Cluster

3)kubectl:Kubernetes的命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

4)kube-proxy:每个Node都会运行kube-proxy服务,它负责将访问service的TCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡

5)Pod网络:Pod之间要能够相互通信,Kubernetes Cluster必须部署Pod网络,flannel就是其中一个可选方案

由于Master也可以作为Node节点,所以Node节点的组件也可以在Master节点中存在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值