kubernetes-2-资源清单文件yaml

声明样式的资源清单文件。
k8s v1.18.2

1 YAML文件书写格式

(1)YAML介绍
YAML:仍是一种标记语言。
为了强调这种语言以数据为中心,而不是以标记语言为重点。

(2)基本语法
使用空格作为缩进;
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;
使用#号注释。

(3)YAML支持的数据结构

(3-1)对象
键值对的集合,也称为映射、哈希、字典。
name: tom
age: 18
stu: {name: tom,age: 18}
注意冒号后面有一个空格。

(3-2)数组
一组按次序排列的值,又称序列、列表。

people
- tom
- jack
或
people: [tom,jack]

(3-3)纯量
a: 12.54

2 资源清单描述方法

在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件称为资源清单。
(1)常用字段
在这里插入图片描述
(1-1)version—>>>String—这里指的是k8s API的版本,目前基本上是v1,可以用kubectl api-versions命令查询。

# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
discovery.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

(1-2)kind------------------------------->>>String-----这里指的是yaml文件定义的资源类型和角色,比如Pod。

(1-3)metadata------------------------->>>Object----元数据对象,固定值就写metadata
metadata.name----------------------->>>String-----元数据对象的名字,这里由我们编写,比如命名Pod的名字
metadata.namespace----------------->>>String----元数据对象的命名空间,由我们自身定义

(1-4)Spec------------------------------->>>Object----详细定义对象,固定值就写Spec
spec.containers[]---------------------->>>list--------这里是Spec对象的容器列表定义,是个列表
spec.containers[].name--------------->>>String-----这里定义容器的名字
spec.containers[].image-------------->>>String----这里定义要用到的镜像名称
spec.containers[].imagePullPolicy—>>>String----拉取策略

(2)举例

(2-1)创建一个Namespace

apiVersion: v1
kind: Namespace
metadata:
  name: test

(2-2)创建一个Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: nginx-containers
    image: nginx:latest

3 命名空间

在现有的k8s集群中运行两套环境,可以使用k8s集群中的命名空间,实现开发测试与预发布环境的隔离。

(1)NameSpace介绍
命名空间
作用:多租户情况下,实现资源隔离。
属于逻辑隔离;
属于管理边界;
不属于网络边界;
可以针对每个namespace做资源配额。

(2)NameSpace查看
#kubectl get namespace
NAME STATUS AGE
default Active 7d5h
kube-node-lease Active 7d5h
kube-public Active 7d5h
kube-system Active 7d5h

名称,状态,集群创建后的时间
default:用户创建的pod默认在此命名空间
kube-node-lease:k8s集群节点租约状态,v1.13加入
kube-public:所有用户均可以访问,包括未认证用户
kube-system:k8s集群在使用。

#kubectl get pods --namespace kube-system
在这里插入图片描述
(3)创建命名空间

(3-1)通过kubectl命令进行创建
#kubectl create namespace test创建
namespace/test created
#kubectl get namespace查看
#kubectl get ns查看

(3-2)通过资源清单文件创建命名空间
#vi create-namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: test2

#kubectl apply -f create-namespace.yaml 创建
namespace/test2 created
#kubectl get ns查看

(4)删除命名空间
删除命名空间时,命名空间中包含的所有资源对象同时被删除。

(4-1)通过kubectl删除
#kubectl get ns确认是否存在
#kubectl delete namespace test删除
namespace “test” deleted
#kubectl get ns

(4-2)通过资源清单文件删除
#kubectl get ns
#cat create-namespace.yaml 确认是否是相应文件
#kubectl delete -f create-namespace.yaml 删除
namespace “test2” deleted

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮冰燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值