首页 > 其他分享 >111

111

时间:2022-12-17 12:56:07浏览次数:27  
标签:Node 容器 Kubernetes Service 111 Deployment Pod

# k8s基础概念

Master组件

  • kube-apiserver:Kubernetes API,集群的统一入口,各组件协调者,以RESTfulAPI提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。
  • kube-controller-manager:处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManageer就是负责管理这些控制器的。例如Deployment、Service
  • kuber-scheduler:根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署再同一个节点上,也可以部署再不同的节点上。
  • etcd:分布式键值存储系统。用于保存集群状态数据,比如Pod、Service等对象信息。

Node组件

  • kubelet:kubelet是Master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。
  • kube-proxy:在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。
  • 第三方容器引擎,例如docker、containerd、podman:容器引擎,运行容器。

Replication Controller

简称RC,RC时Kubernetes系统中的核心概念之一。它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性,比如滚动升级和弹性伸缩


在我们定义了一个RC并将其提交到Kubernetes集群中后,Master上的Controller Manager组件就会得到通知,定期巡检系统中当前存活的目标Pod,并确保目标Pod实例的数量刚好等于此RC的期望值,如果有过多的Pod副本在运行,系统就会停掉一些Pod,过少则会再创建一些Pod。相比传统的IT环境,如果程序意外挂掉,需要手动启动,但是再k8s通过RC,就大大减少这些手工运维工作

ReplicaSet

ReplicaSet实现了Pod的多副本管理。使用Deployment时会自动创建ReplicaSet,也就是说Deployment是通过ReplicaSet来管理Pod的多个副本,所以我们通过不需要直接使用ReplicaSet。


1.Replication Controller由于与Kubernetes代码中的模块Replication Controller同名,并且”Replication Controller“无法准确表达它的本意,所以在Kubernetes1.2中,升级为另外一个新概念----Replica Set,官方解释为”下一代的RC“
2.我们很少单独使用Replica Set,它主要被Deployment这个更高层的资源对象所使用。

Deployment

应用管理者,是用于部署应用的对象,Deployment内部使用了Replica Set来实现的,我们可以把Deployment看做RC的一次升级


创建Deployment对象后,master会根据Deployment对象的配置文件去描述应用,应用名称,使用的镜像名称,需要几个实例,多少内存,多少CPU资源

Pod

Pod是一组容器(当然也可以只有一个)容器本身就是一个小盒子了,Pod相当于在容器上又包了一层小盒子。Pod是Kubernetes的最小调度单位。


Pod中的容器共享数据卷volume
Pod中的容器共享IP地址和端口

Service

Service是一组逻辑pod的抽象,为一组pod提供统一入口,用户只需与service打交道,service提供DNS解析名称,负责追踪pod动态变化并更新转发表,通过负载均衡算法最终将流量转发到后端的pod。Kubernetes里的每个Service其实也可以理解为我们的微服务构架中的一个微服务。
Service对外提供多种入口:

  1. ClusterIP: Service在集群内的唯一ip地址,虚拟的ip,只能在Kubernetes集群里访问。通过ClusterIP,负载均衡的访问后端的Pod
  2. NodeIP+NodePort: Service会在集群的每个Node上都启动一个端口,通过NodeIP:NodePort访问后端的Pod


1.Service负责服务发现,找到每个Pod,不管Deployment的Pod有多少个,不管它是更新,销毁还是重建,Service总是能发现并维护好它的ip列表。
2.kube-proxy是Kubernetes核心组件,运行在集群中每一个节点上,负责监控集群中service、endpoint变更,维护各个节点上的转发规则,是实现service功能的核心部件。

Label

标签,一个Label是一个key=value的键值对。Label可以被附加到各种资源对象上,例如Node、Pod、Service、RC等,一个资源对象可以定义任意数量的Label。

Volume

Volume(存储卷)Volume是Pod中能够被多个容器共享的磁盘目录。我们知道,默认情况下Docker容器中的数据都是非持久化的,在容器消亡后数据也会消失。因此Docker提供了Volume机制以便实现数据的持久化。Kubernetes中Volume的概念与Docker中的Volume类似,但不完全相同。
Kubernetes提供了非常丰富的Volume类型:

  1. emptyDir:临时空间,Pod分配到Node时创建,无须指定宿主主机上对应的目录,在Kubernetes会自动分配当前Node的一个目录,当Pod被移除时,emptyDir中的数据也会永久删除。
  2. hostPath:为Pod挂载宿主主机上的文件或目录。用于数据永久保存。在不同的Node上具有相同配置的Pod,可能会因为宿主机上的目录和文件不同而导致Volume上的目录和文件的访问结果不一致。
  3. gcePersistentDisk:使用谷歌公有云提供的永久磁盘。数据永久保存。
  4. NFS:NFS 是 Network File System 的缩写,即网络文件系统。Kubernetes 中通过简单地配置就可以挂载 NFS 到 Pod 中,而 NFS 中的数据是可以永久保存的,同时 NFS 支持同时写操作。k8s挂载NFS

Persistent Volume:简称PV,就是网盘,网络存储,不属于任何Node,但可以在每个Node上访问。

Namespace

命名空间,Namespace在很多情况下用于实现多租户的资源隔离。Namespace通过集群内部的资源对象"分配"到不同的Namespace中,形成逻辑上纷纷组的不同项目,便于不同的分组共享使用整个集群的资源的同时还能被分别管理。

ConfigMap

ConfigMap顾名思义,是用于保存配置数据的键值对,可以用来保存单个属性,也可以保存配置文件。就是为了让镜像 和 配置文件解耦,以便实现镜像的可移植性和可复用性,因为一个configMap其实就是一系列配置信息的集合,将来可直接注入到Pod中的容器使用,而注入方式有两种,一种将configMap做为存储卷,一种是将configMap通过env中configMapKeyRef注入到容器中

标签:Node,容器,Kubernetes,Service,111,Deployment,Pod
From: https://www.cnblogs.com/tt1988/p/16988844.html

相关文章

  • 洛谷 P1113 杂务(拓扑排序,递归)
    题目大意:有一个有向无圈图,每个节点看作一个任务,一个任务需要完成必须先完成父亲节点的任务,每个任务都有耗时。假设现在所有不相关任务都可以并行执行,问最短多少时间可以把所......
  • 111
    我是微软Dynamics365&PowerPlatform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年DynamicsCRM/BusinessSolutions方面的微软最有价值专家(MicrosoftMVP),欢......
  • 最新CentOS 8.5.2111 安装 docker
    安装docker官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/检测CentOS版本:7以上[root@localhost~]#cat/etc/redhat-releaseCentOSLinu......
  • 1118及之后的单片机学习记录
    1.枚举类型是一种基本数据类型,其中一个枚举成员所占大小4个字节;对枚举变量的赋值只能通过将一个值强制类型转换为它本身的枚举成员然后进行赋值(不可以对枚举成员赋值,不可......
  • 代码随想录算法训练营Day16| 104. 二叉树的最大深度、559.n叉树的最大深度、111. 二叉
    代码随想录算法训练营Day16|104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数104.二叉树的最大深度104.二叉树的最大......
  • 洛谷P1111修复公路
    思路:并查集1#include<cstdio>2#include<iostream>3#include<algorithm>4#include<math.h>5#include<vector>6#include<set>7usingnamespacestd;......
  • 问题解决系列:从源码讲解为什么是 'JZ0SL_ Unsupported SQL type 1111'
    一、问题场景正在做代码改造,使用​​mybatis​​​+​​sybase​​进行数据库操作,运行过程中,提示以下报错:java.io.IOException:JZ0SL:UnsupportedSQLtype1111.本篇博客......
  • leetcode-111-easy
    MinimumDepthofBinaryTreeGivenabinarytree,finditsminimumdepth.Theminimumdepthisthenumberofnodesalongtheshortestpathfromtherootnode......
  • 111
    11思考题1.1WhatistheOSIsecurityarchitecture?什么是OSI安全体系结构?安全攻击安全机制安全服务1.2被动和主动安全威胁之间有什么不同?被动攻击的本质是窃......
  • AcWing 111. 畜栏预定
    有n头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。给定n头牛和每头牛开始吃草的时间A以及结束吃草的时间当两头牛的吃草区......