Cloud常识
文章目录1.啥叫headless service1.啥叫headless serviceservice的作用,主要是代理一组pod容器负载均衡服务,但是有时候我们不需要这种负载均衡场景,比如下面的两个例子。比如kubernetes部署某个kafka集群,这种就不需要service来代理,客户端需要的是一组pod的所有的ip。还有一种场景客户端自己处理负载均衡的逻辑,比如kubernates部署两个
文章目录
-2. sc和pvc
1、StorageClass(SC)
:用来描述存储的类别和参数的 Kubernetes 资源对象。
它允许管理员定义不同类型的存储,例如云存储、网络存储(比如NFS)或本地存储,并指定不同存储类型的参数,例如存储的性能、卷的复制策略等。
StorageClass 的定义使得用户可以声明他们的应用程序需要什么类型的存储,而无需关心底层的存储实现细节。
当 PVC 请求创建 PersistentVolume(PV)时,系统会根据 PVC 的 StorageClass 来选择合适的 PV。如果不存在匹配的 PV,则根据 StorageClass 的定义动态创建 PV。
2、PersistentVolumeClaim(PVC)
:用来声明应用程序需要持久性存储的 Kubernetes 资源对象。
开发人员通过创建 PVC 来请求持久性存储资源,而不必直接管理底层的存储资源。
PVC 具有一组参数,描述了所需的存储容量、访问模式、存储类别等。
当 PVC 被创建并提交给 Kubernetes 集群时,Kubernetes 控制平面会尝试根据 PVC 的要求选择合适的 PV,并将其绑定到 PVC 上,从而使得 PVC 可以使用对应的 PV 提供的存储资源。
有一种简单粗暴的理解:
SC,是存储资源池; PVC,是从资源池中申请的资源。
-1.nfs
NFS
(Network File System)是一种分布式文件系统协议。NFS是UNIX 和类 UNIX 系统中最常用的网络文件系统之一。
NFS 使用客户端-服务器模型,其中文件存储在服务器上,客户端可以通过网络连接访问这些文件。NFS 允许客户端系统像访问本地文件一样访问远程文件,使得用户和应用程序可以透明地访问远程系统上的文件资源。通过 NFS,用户可以像使用本地文件系统一样进行文件读写、复制、删除等。
NFS 基于共享的文件系统概念来提供文件访问服务,支持跨平台操作,并提供了一种灵活的方式来共享文件资源,使得多台计算机可以共享和协作使用同一组文件。
总之:NFS 是Linux层的概念
0 基本概念
Pod 是最小调度单元
Pod 是K8的最小调度单元。部署一个容器可能容易,但是每个容器都不同配置和功能,k8需要对容器进行管理。为了避免在容器这个实体上增加更多概念,k8s引入了 pod 。
同时,Pod中容器共享 Pause/Infra 容器的IP和Volume ,方便解决紧密耦合的容器间通信问题和文件共享问题。
Pod通信
Pod内容器共享一个IP,容器之间用localhost就能通信。一个K8的任意两个Pod间可以直接TCP/IP通信 (注意:两个Pod可能在不同宿主机上)
配置管理
借助k8的 configMap实现配置和程序分离
生命周期和重启策略
- Pod状态 pending | running | succeeded | failed
- 重启策略
- Always (容器失效自动重启)
- Never
- Onfailure(容器返回非0状态码重启)
- 健康探针
- liveness
- readiness
定向调度
- NodeSelector
- NodeAffinity (节点亲和度)
- PodAffinity (Pod亲和度)
- DaemonSet (每个节点仅一份,用于监控、收集日志)
优先级抢占调度
- 驱逐(eviction )
- 抢占(Preemption)
控制器
- Deployment
- ReplicaSet
- DaemonSet
- StateFulSet
有状态的服务。- pod重新调度之后依然能访问到相同的持久化数据
- pod重新调度之后,
podName
和HostName
不变,基于Headless service
实现 - pod启动是有序的,依据顺序依次进行,只有前一个pod启动成功之后,下面才能继续进行
- Job/CronJob
- Horizontal Pod Autoscaling
- 水平自动扩缩容
1. 啥叫headless service
service
的作用,主要是代理一组pod
容器负载均衡服务,但是有时候我们不需要这种负载均衡场景,比如下面的两个例子。
- 比如
kubernetes
部署某个kafka集群,这种就不需要service
来代理,客户端需要的是一组pod的所有的ip。 - 还有一种场景客户端自己处理负载均衡的逻辑,比如
kubernates
部署两个mysql,有客户端处理负载请求,或者根本不处理这种负载,就要两套mysql。
基于上面的两个例子,kubernates增加了headless serivces
功能,字面意思无service
其实就是改service
对外无提供IP
2.一个容器可以起多个进程?
首先,一个容器中当然可以有多个进程. 最典型的, 你的Java应用跑在这个容器中,然后你打开一个vim editor ,又多了一个进程… 这种问法是没理解容器的实质.
Docker 容器 实际上是在创建容器进程时,指定了这个进程所需要启用的一组 Namespace
参数。这样,容器就只能“看”到当前 Namespace
所限定的资源、文件、设备、状态,或者配置。而对于宿主机以及其他不相关的程序,它就完全看不到了。
所以, 容器,就是一种特殊的进程
更多推荐
所有评论(0)