首页 > 分享 > Kubernetes:命名空间(namespace 创建、删除,pod中设置namespace,命名空间首选项设置set

Kubernetes:命名空间(namespace 创建、删除,pod中设置namespace,命名空间首选项设置set

参考:https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/namespaces/

一,什么是命名空间?

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。你可以认为namespaces是你kubernetes集群中的虚拟化集群。在一个Kubernetes集群中可以拥有多个命名空间,它们在逻辑上彼此隔离。 他们可以为您和您的团队提供组织,安全甚至性能方面的帮助!

二,何时使用多个命名空间?

1:命名空间适用于存在很多跨多个团队或项目的用户的场景。

对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。当需要名称空间提供的功能时,请开始使用它们。

2:命名空间为名称提供了一个范围。

资源的名称需要在命名空间内是唯一的,但不能跨命名空间。命名空间不能相互嵌套,每个 Kubernetes 资源只能在一个命名空间中。

3:命名空间是在多个用户之间划分集群资源的一种方法(通过资源配额)。

4:在 Kubernetes 未来版本中,相同命名空间中的对象默认将具有相同的访问控制策略。

5:不需要使用多个命名空间来分隔轻微不同的资源,例如同一软件的不同版本:使用 labels 来区分同一命名空间中的不同资源。

三,使用命名空间

3.1 查看命名空间

kubectl get namespace

NAME STATUS AGE

default Active 39m

kube-public Active 39m

kube-system Active 39m

也可以使用 ns 代替,效果与namespace 一样

kubectl get ns

Kubernetes 会创建三个初始命名空间:

* default 没有指明使用其它命名空间的对象所使用的默认命名空间

* kube-system Kubernetes 系统创建对象所使用的命名空间

* kube-public 这个命名空间是自动创建的,所有用户(包括未经过身份验证的用户)都可以读取它。这个命名空间主要用于集群使用,以防某些资源在整个集群中应该是可见和可读的。这个命名空间的公共方面只是一种约定,而不是要求。

3.2 创建命名空间

kubectl create namespace oopxiajun-test

namespace/oopxiajun-ns-test created

当然也可以使用yaml来处理

vim kube-ns-test.yaml

kind: Namespace #类型为Namespace

apiVersion: v1 #版本号为v1

metadata:

name: oopxiajun-ns-test

labels:

name: label-test-v1

kubectl apply -f kube-ns-test.yaml

namespace/oopxiajun-ns-test created

查看命名空间

kubectl get namespace

NAME STATUS AGE

default Active 50m

kube-public Active 51m

kube-system Active 51m

oopxiajun-ns-test Active 20s

3.3 pod使用命名空间

在metadata 下面加一个namespace

vim first-pod.yml

apiVersion: v1

kind: Pod

metadata:

name: my-first-pod

namespace: oopxiajun-ns-test

labels:

app: bash

tir: backend

spec:

containers:

- name: bash-container

image: docker.io/busybox

command: ['sh','-c','echo Hello myFirstPod! && sleep 3600']

kubectl create -f first-pod.yml

pod/my-first-pod created

kubectl get pods -n=oopxiajun-ns-test

NAME READY STATUS RESTARTS AGE

my-first-pod 1/1 Running 0 3m10s

3.4 设置命名空间首选项

当我们需要获得pod 相关信息时,不带命名空间 ,你会发现我们刚刚所构建的pod 查不到。

kubectl get pod

No resources found in default namespace.

kubectl get pods

No resources found in default namespace.

当前默认的名称空间为default

我们需要设置命名空间首选项

kubectl config set-context --current --namespace=oopxiajun-ns-test

Context "kubernetes-admin@kubernetes" modified.

kubectl get pod

NAME READY STATUS RESTARTS AGE

my-first-pod 1/1 Running 0 34m

3.5 并非所有对象都在命名空间中

大多数 kubernetes 资源(例如 Pod、Service、副本控制器等)都位于某些命名空间中。但是命名空间资源本身并不在命名空间中。而且底层资源,例如 nodes 和持久化卷不属于任何命名空间。

查看哪些 Kubernetes 资源在命名空间中,哪些不在命名空间中:

# 在命名空间中的资源

kubectl api-resources --namespaced=true

# 部在命名空间中的资源

kubectl api-resources --namespaced=false

kubectl api-resources --namespaced=true

NAME SHORTNAMES APIGROUP NAMESPACED KIND

bindings true Binding

configmaps cm true ConfigMap

endpoints ep true Endpoints

events ev true Event

limitranges limits true LimitRange

persistentvolumeclaims pvc true PersistentVolumeClaim

pods po true Pod

podtemplates true PodTemplate

replicationcontrollers rc true ReplicationController

resourcequotas quota true ResourceQuota

secrets true Secret

serviceaccounts sa true ServiceAccount

services svc true Service

controllerrevisions apps true ControllerRevision

daemonsets ds apps true DaemonSet

deployments deploy apps true Deployment

replicasets rs apps true ReplicaSet

statefulsets sts apps true StatefulSet

localsubjectaccessreviews authorization.k8s.io true LocalSubjectAccessReview

horizontalpodautoscalers hpa autoscaling true HorizontalPodAutoscaler

cronjobs cj batch true CronJob

jobs batch true Job

leases coordination.k8s.io true Lease

endpointslices discovery.k8s.io true EndpointSlice

events ev events.k8s.io true Event

ingresses ing extensions true Ingress

ingresses ing networking.k8s.io true Ingress

networkpolicies netpol networking.k8s.io true NetworkPolicy

poddisruptionbudgets pdb policy true PodDisruptionBudget

rolebindings rbac.authorization.k8s.io true RoleBinding

roles rbac.authorization.k8s.io true Role

ubectl api-resources --namespaced=false

NAME SHORTNAMES APIGROUP NAMESPACED KIND

componentstatuses cs false ComponentStatus

namespaces ns false Namespace

nodes no false Node

persistentvolumes pv false PersistentVolume

mutatingwebhookconfigurations admissionregistration.k8s.io false MutatingWebhookConfiguration

validatingwebhookconfigurations admissionregistration.k8s.io false ValidatingWebhookConfiguration

customresourcedefinitions crd,crds apiextensions.k8s.io false CustomResourceDefinition

apiservices apiregistration.k8s.io false APIService

tokenreviews authentication.k8s.io false TokenReview

selfsubjectaccessreviews authorization.k8s.io false SelfSubjectAccessReview

selfsubjectrulesreviews authorization.k8s.io false SelfSubjectRulesReview

subjectaccessreviews authorization.k8s.io false SubjectAccessReview

certificatesigningrequests csr certificates.k8s.io false CertificateSigningRequest

ingressclasses networking.k8s.io false IngressClass

runtimeclasses node.k8s.io false RuntimeClass

podsecuritypolicies psp policy false PodSecurityPolicy

clusterrolebindings rbac.authorization.k8s.io false ClusterRoleBinding

clusterroles rbac.authorization.k8s.io false ClusterRole

priorityclasses pc scheduling.k8s.io false PriorityClass

csidrivers storage.k8s.io false CSIDriver

csinodes storage.k8s.io false CSINode

storageclasses sc storage.k8s.io false StorageClass

volumeattachments storage.k8s.io false VolumeAttachment

3.6 删除名称空间

kubectl delete namespaces oopxiajun-ns-test

namespace "oopxiajun-ns-test" deleted

再次get pod,已经拿不到pod了(etcd中的源数据已经被删除了,我们的my-first-pod这个pod已经被测底干掉了)

kubectl get pod

No resources found in oopxiajun-ns-test namespace.

我们需要将命名空间设置回default

kubectl config set-context --current --namespace=default

Context "kubernetes-admin@kubernetes" modified.

相关知识

Kubernetes:命名空间(namespace 创建、删除,pod中设置namespace,命名空间首选项设置set
PHP命名空间和自动加载类
kubernetes之pod生命周期,pod重启策略, 镜像拉取策略
Pod控制器Deployment使用详解(更新策略、回滚策略、暂停策略)以及金丝雀发布详解
Kubernetes应用编排与管理 —— Deployment升级策略
vim常用设置
HEVC/H265 namespace 介绍
知识分享系列二:云原生技术
CA1054:URI 参数不应为字符串(代码分析)
服务网格下的东西向与南北向流量管理实践

网址: Kubernetes:命名空间(namespace 创建、删除,pod中设置namespace,命名空间首选项设置set https://m.huajiangbk.com/newsview1681203.html

所属分类:花卉
上一篇: Cadence中库的命名规则
下一篇: 巴毛杆学名叫什么