【云原生 从零开始学Kubernetes】七、资源清单与Namespace_managedfields

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

FIELDS:
annotations <map[string]string>
Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations

annotations 是注解,map 类型表示对应的值是 key-value 键值对,<string,string>表示 key 和value 都是 String 类型的

“metadata”: {
“annotations”: {
“key1” : “value1”,
“key2” : “value2”
}
}
用 Annotation 来记录的信息包括: build 信息、release 信息、Docker 镜像信息等,例如时间戳、release id 号、镜像 hash 值、docker registry 地址等; 日志库、监控库、分析库等资源库的地址信息; 程序调试工具信息,例如工具名称、版本号等; 团队的联系信息,例如电话号码、负责人名称、网址等。

clusterName
The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
#对象所属群集的名称。这是用来区分不同集群中具有相同名称和命名空间的资源。此字段现在未设置在任何位置,apiserver 将忽略它,如果设置了就使用设置的值

creationTimestamp
deletionGracePeriodSeconds
deletionTimestamp
finalizers <[]string>
generateName
generation
labels <map[string]string> #创建的资源具有的标签
Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels
#labels 是标签,labels 是 map 类型,map 类型表示对应的值是 key-value 键值对<string,string>表示 key 和 value 都是 String 类型的
managedFields <[]Object>
name #创建的资源的名字
namespace #创建的资源所属的名称空间
Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the “default” namespace, but “default” is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.
Must be a DNS_LABEL. Cannot be updated. More info:
http://kubernetes.io/docs/user-guide/namespaces

namespaces 划分了一个空间,在同一个 namesace 下的资源名字是唯一的,默认的名称空间是default。

ownerReferences <[]Object>
resourceVersion
selfLink
uid


## 通过资源清单文件创建第一个 Pod


在node1和node2节点上使用docker下载tomcat!


### 创建yaml文件



[root@k8smaster ~]# vim pod-first.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-first
namespace: default
spec:
containers:

  • name: tomcat-first
    ports:
    • containerPort: 8080
      image: tomcat
      imagePullPolicy: IfNotPresent

### 更新资源清单,查看pod



[root@k8smaster ~]# kubectl apply -f pod-first.yaml

[root@k8smaster ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-first 1/1 Running 0 6s


### 查看命名空间以及进入容器内部



#查看指定命名空间
kubectl get pods -n kube-system

#查看 pod 日志 动态的 去掉f就不是了
kubectl logs -f pod-first

#查看 pod 里指定容器的日志
kubectl logs pod-first -c tomcat-first

#进入到刚才创建的 pod,刚才创建的 pod 名字是 web
kubectl exec -it pod-first – /bin/bash

#假如 pod 里有多个容器,进入到 pod 里的指定容器,按如下命令:
kubectl exec -it pod-first -c tomcat-first – /bin/bash


我们上面创建的 pod 是一个自主式 pod,也就是通过 pod 创建一个应用程序,如果 pod 出现故障停掉,那么我们通过 pod 部署的应用也就会停掉,不安全, 还有一种控制器管理的 pod,通过控制器创建pod,可以对 pod 的生命周期做管理,可以定义 pod 的副本数,如果有一个 pod 意外停掉,那么会自动起来一个 pod 替代之前的 pod。


### 通过kubectl run也可以创建pod



bectl run tomcat01 --image=tomcat --image-pull-policy=‘IfNotPresent’ --port=8080


## 命名空间


### 什么是命名空间?


Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。 命名空间 namespace 是 k8s 集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命 名空间,例如,可以为 test、devlopment、production 环境分别创建各自的命名空间。


Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。


默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的namespace下。


kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的"组",以方便不同的组的资源进行隔离使用和管理。


可以通过kubernetes的授权机制,将不同的namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,例如CPU使用量、内存使用量等等,来实现租户可用资源的管理。


kubernetes在集群启动之后,会默认创建几个namespace



[root@k8smaster ~]# kubectl get namespace
NAME STATUS AGE
default Active 8d # 所有未指定Namespace的对象都会被分配在default命名空间
kube-node-lease Active 8d # 集群节点之间的心跳维护,v1.13开始引入
kube-public Active 8d # 此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-system Active 8d # 所有由Kubernetes系统创建的资源都处于这个命名空间


#### namespace 应用场景


命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。


1、查看名称空间及其资源对象


k8s 集群默认提供了几个名称空间用于特定目的,例如,kube-system 主要用于运行系统级资源, 存放 k8s 一些组件的。而 default 则为那些未指定名称空间的资源操作提供一个默认值。


使用 kubectl get namespace 可以查看 namespace 资源,使用 kubectl describe namespace $NAME 可以查看特定的名称空间的详细信息。


2、管理 namespace 资源


namespace 资源属性较少,通常只需要指定名称即可创建,如“kubectl create namespace pp”。


namespace 资源的名称仅能由字母、数字、下划线、连接线等字符组成。删除 namespace 资 源会级联删除其包含的所有其他资源对象。


下面来看namespace资源的具体操作:


#### 查看



1 查看所有的命名空间 命令:kubectl get ns

[root@k8smaster ~]# kubectl get ns
NAME STATUS AGE
default Active 8d
kube-node-lease Active 8d
kube-public Active 8d
kube-system Active 8d

2 查看指定的ns 命令:kubectl get ns ns名称

[root@k8smaster ~]# kubectl get ns default
NAME STATUS AGE
default Active 8d

3 指定输出格式 命令:kubectl get ns ns名称 -o 格式参数

kubernetes支持的格式有很多,比较常见的是wide、json、yaml

[root@k8smaster ~]# kubectl get ns default -o yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: “2022-06-26T07:48:15Z”
managedFields:

  • apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
    f:status:
    f:phase: {}
    manager: kube-apiserver
    operation: Update
    time: “2022-06-26T07:48:15Z”
    name: default
    resourceVersion: “159”
    selfLink: /api/v1/namespaces/default
    uid: 219e17f2-9c45-4556-a857-1c96445a6278
    spec:
    finalizers:
  • kubernetes
    status:
    phase: Active

4 查看ns详情 命令:kubectl describe ns ns名称

[root@k8smaster ~]# kubectl describe ns default
Name: default
Labels:
Annotations:
Status: Active # Active 命名空间正在使用中 Terminating 正在删除命名空间

ResourceQuota 针对namespace做的资源限制

LimitRange针对namespace中的每个组件做的资源限制

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

707671523)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值