认识Kubernetes

一:kubernetes简介

1、简介
云原生基金会 CNCF
Kubernetes是谷歌严格保密十几年的秘密武器—Borg的一个开源版本,是Docker分布式系统解决方案。
官方网站:https://kubernetes.io/
2、Kubernetes组件
Kubernetes Master :
kube-apiserver, kube-controller-manager, kube-scheduler
Kubernetes Node:
kube-proxy,kubelet
kube-apiserver: 负责 API 服务
kube-scheduler: 负责调度
kube-controller-manager: 负责容器编排
kubelet:它与Kubernetes Master进行通信。
kube-proxy:一个网络代理,可反映每个节点上的Kubernetes网络服务。
3、.Kubernetes的基本对象包括
Pod
Service
Volume
Namespace
4、Kubernetes 的顶层设计
在这里插入图片描述
5.kubernetes是什么
Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes拥有一个庞大且快速增长的生态系统。

二:kubernetes核心概念

1.kubernetes对象之pod
认识pod
Pod直译是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个Pod)。在Kubernetes中我们不会直接操作容器,而是把容器包装成Pod再进行管理。
Pod是Kubernetes进行创建、调度和管理的最小单位
Pod运行于Node节点上, 若干相关容器的组合
Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通信
Pod可以指定一组共享存储。Volumes Pod中。Pod中的所有容器都可以访问共享卷,从而使这些容器可以共享数据
Pod 就是 k8s 世界里的"应用";而一个应用,可以由多个容器组成。
在这里插入图片描述
在这里插入图片描述
注意:
重启 Pod 中的容器不应与重启 Pod 混淆。Pod 本身不运行,而是作为容器运行的环境,并且一直保持到被删除为止。
Pod本身无法自我修复。如果将Pod调度到发生故障的节点,或者调度操作本身失败,则将Pod删除;同样,由于缺乏资源或Node维护,Pod无法幸免。Kubernetes使用称为Controller的更高级别的抽象来处理管理相对易用的Pod实例的工作。因此,虽然可以直接使用Pod,但在Kubernetes中使用Controller管理Pod更为常见。
pause容器
作用:负责同一个pod的容器通信
每个Pod中都有一个pause容器,pause容器做为Pod的网络接入点,Pod中其他的容器会使用容器映射模式启动并接入到这个pause容器
属于同一个Pod的所有容器共享网络的namespace
一个Pod里的容器与另外主机上的Pod容器能够直接通信
Pods and Controllers
Controller可以为您创建和管理多个Pod,以处理复制和推出并在集群范围内提供自我修复功能。例如,如果某个节点发生故障,则控制器会将这个Node上的所有Pod重新调度到其他节点上。
Pod 模板
Pod 模板是包含在其他对象中的 Pod 规范,例如 Replication Controllers、 Jobs、和 DaemonSets。 控制器使用 Pod 模板来制作实际使用的 Pod。 下面的示例是一个简单的 Pod 清单,它包含一个打印消息的容器。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

Pod 的终止
Pod 代表在集群中的节点上运行的进程,所以当不再需要这些进程时,允许这些进程优雅地终止是非常重要的,用户应该能够请求删除并且知道进程何时终止,但是也能够确保删除最终完成。当用户请求删除 Pod 时,系统会记录在允许强制删除 Pod 之前所期望的宽限期,并向每个容器中的主进程发送 TERM 信号。一旦过了宽限期,KILL 信号就发送到这些进程,然后就从 API 服务器上删除 Pod。如果 Kubelet 或容器管理器在等待进程终止时发生重启,则终止操作将以完整的宽限期进行重试。
终止流程:
1.用户发送命令删除 Pod,使用的是默认的宽限期(30秒)
2.API 服务器中的 Pod 会随着宽限期规定的时间进行更新,过了这个时间 Pod 就会被认为已 “死亡”。
3.当使用客户端命令查询 Pod 状态时,Pod 显示为 “Terminating”。
4.当 Kubelet 看到 Pod 由于步骤2中设置的时间而被标记为 terminating 状态时,它就开始执行关闭 Pod 流程。
5.给 Pod 内的进程发送 TERM 信号。
(和第3步同步进行)从服务的端点列表中删除 Pod,Pod也不再被视为副本控制器的运行状态的 Pod 集的一部分。当负载平衡器(如服务代理)将 Pod 从轮换中移除时,关闭迟缓的 Pod 将不能继续为流量服务。
6.当宽限期结束后,Pod 中运行的任何进程都将被用 SIGKILL 杀死。
7.Kubelet 将通过设置宽限期为0(立即删除)来完成删除 API 服务器上的 Pod。Pod 从 API 中消失,从客户端也不再可见。
注意:
默认情况下,所有删除在30秒内都是优雅的。kubectl delete 命令支持 --grace-period= 选项,允许用户覆盖默认值并声明他们自己的宽限期。设置为 ‘0’ 会强制删除 Pod。在 kubectl 1.5以后的版本(含1.5版本)中,为了执行强制删除,您还必须为 --grace-period=0 声明一个额外的 --force 标志。
2.kubernetes核心组件
Master 组件:
Master 组件提供集群的控制平面。Master 组件对集群进行全局决策(例如,调度),并检测和响应集群事件,Master组件可以在集群中的任何节点上运行
kube-apiserver:
主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端
etcd:
etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 K8S所有集群数据的后台数据库
kube-scheduler:
主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行
kube-controller-manager:
在主节点上运行控制器 的组件,从逻辑上讲,每个控制器 都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。
副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。
端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)。
服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌.
Node 组件:
节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。
kubelet:
一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中
kube-proxy:
kube-proxy 是集群中每个节点上运行的网络代理,实现 Kubernetes Service 概念的一部分。
kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
如果有 kube-proxy 可用,它将使用操作系统数据包过滤层。否则,kube-proxy 会转发流量本身。
容器运行环境(Container Runtime)
容器运行环境是负责运行容器的软件。
Kubernetes 支持多个容器运行环境: Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。
2.kubernetes核心组件
Master 组件:
Master 组件提供集群的控制平面。Master 组件对集群进行全局决策(例如,调度),并检测和响应集群事件,Master组件可以在集群中的任何节点上运行
kube-apiserver:
主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端
etcd:
etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 K8S所有集群数据的后台数据库
kube-scheduler:
主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行
kube-controller-manager:
在主节点上运行控制器 的组件,从逻辑上讲,每个控制器 都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。
副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。
端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)。
服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌.
Node 组件:
节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。
kubelet:
一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中
kube-proxy:
kube-proxy 是集群中每个节点上运行的网络代理,实现 Kubernetes Service 概念的一部分。
kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
如果有 kube-proxy 可用,它将使用操作系统数据包过滤层。否则,kube-proxy 会转发流量本身。
容器运行环境(Container Runtime)
容器运行环境是负责运行容器的软件。
Kubernetes 支持多个容器运行环境: Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值