volume 、namespace

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: volume 、namespace

顺带说一下 volume 和 namespace ,咱们就开始分享一下 service 是什么

volume 是什么

还记得 docker 的 volume 吗,是一个数据卷

在 K8S 中,volume 是 pod 中能够被多个容器访问的共享目录 ,实际上和 docker 是一样的

volume 是被定义在 pod 上面的,因此,volume 的生命周期和 pod 是相同的

volume 会被该 pod 中的多个容器挂载到具体的文件目录下面,若某个容器挂掉了,是不会影响 volume 的,也就是说 volume 中的数据是不会丢失的

我们可以使用 volume:

  • 在 pod 中指定 volume 的类型 和内容,可以使用spec.volumes字段
  • 需要将 volume 映射到容器中,我们可以使用 spec.containers.volumeMounts 字段

上面有说到 volume 的类型,这就可多了 , K8S 中支持的 volume 类型有:

  • awsElasticBlockStore
  • azureFile
  • cephfs
  • emptyDir
  • hostPath
  • configMap
  • fc (光纤通道)
  • 。。 。 等等

可以查看这上面的文档,每一种 卷类型都有解释到 点我开始卷一下

简单看一下 emptyDir 卷类型

emptyDir 见名知意,emptyDir 在创建 pod 的时候就会被创建,而且是个空的 , 只要 pod 在运行,这个卷就会一直存在

但是,当 pod 从节点上删除的时候,这个 emptyDir 也会被随之永久删除了

使用 emptyDir 我们可以这样写

emptyDir 卷存储是依赖于我们节点的存储介质的,例如,磁盘,SSD 或者网络存储等等

再来看看 hostPath 类型

hostPath 类型的卷,能够让对应的容器访问当当前宿主机上指定的目录

对于 hostPath 类型,我们尽可能的少用,官方有一个这样的警告

例如,我们需要运行一个访问一个 docker 系统目录的容器,那么我们可以使用 /var/lib/docker 目录作为一个 hostPath 类型的卷

但是,只要这个 pod 离开宿主机的话,hostPath 中的数据不会被永久删除,但是数据也不会跟着 pod 迁移到别的宿主机上面

使用 hostPath 我们可以这样写

关于 卷 的,我们后续可以将高阶用法,以及具体的原理可以分享一波

namespace

namespace 即 命名空间

命名空间在多数情况下是用于实现多用户的资源隔离的,通过集群内部的资源对象分配到不同的 命名空间中,形成逻辑上的分组,

这样可以让不同的组在共享使用整个集群的资源的情况下,还能够被分组管理

在 K8S 初始状态下,K8S 会有 3 个命名空间

  • default

无名字空间对象的默认名字空间

在 K8S 中,集群启动后,会创建一个 default 的命名空间

如果我们创建的 rc ,service,pod,不指定命名空间的话,那么这些资源都将被系统创建为 default 的命名空间中

  • kube-system

K8S 系统创建的对象的名字空间

  • kube-public

是 K8S 自动创建且被所有用户可读的名字空间

关于命名空间共享集群我们可以查看这里: 点我 进入 命名空间

我们可以这样使用命名空间:

  • 创建一个 NameSpace
apiVersion: v1
kind: NameSpace
metadata:
  name: myns
--------------------
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: myns
spec:
 containers:
 - image: busybox
   command:
   - ls 
   name: busybox

如上,我们创建了一个名为 myns的命名空间,创建了一个 pod ,指定命名空间为 myns

我们可以这样查看命名空间:

kubectl get namesapces

我们也可以直接通过命令创建命名空间

kubectl create namespace myns

创建一个 pod ,指定命名空间为 myns , 创建后,我们可以查看指定 命名空间下的 pod 资源

kubectl get pods --namespace=命名空间

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
11月前
|
Kubernetes Nacos 数据中心
k8s(9)Namespace(命名空间)
Namespace(命名空间)
237 0
|
编译器 C语言 C++
【C++】命名空间 ( namespace )
【C++】命名空间 ( namespace )
|
2月前
|
C语言 C++
C++(六)Namespace 命名空间
命名空间(Namespace)是为了解决大型项目中命名冲突而引入的机制。在多库集成时,不同类库可能包含同名函数或变量,导致冲突。C++通过语法形式定义了全局无名命名空间,并允许对全局函数和变量进行作用域划分。命名空间支持嵌套与合并,便于协同开发。其使用需谨慎处理同名冲突。
|
5月前
|
C++
C++命名空间(namespace)的使用
C++命名空间(namespace)的使用
|
6月前
|
C++
C++命名空间(Namespace)详解
C++命名空间(Namespace)详解
|
6月前
|
编译器 数据安全/隐私保护 C语言
C++ 之命名空间namespace【详解】
C++ 之命名空间namespace【详解】
103 4
|
11月前
|
算法 编译器 C语言
C++ | 你真的了解namespace吗?
C++ | 你真的了解namespace吗?
51 0
|
Kubernetes 容器
k8s的Namespace详解
k8s的Namespace详解
169 0
|
编译器 程序员 C++
【C++】--- namespace命名空间
【C++】--- namespace命名空间
75 0
|
存储 小程序 编译器
C++之命名空间(namespace)
C++之命名空间(namespace)
160 0