Kubernetes入门实验:namespace

作者注:本文仅为笔者学习记录,不具任何参考意义。

k8s namespace 实验。
注:本文为笔者实验记录,非教程,另会不定时更新。

环境

1
2
3
4
5
# kubectl get node
NAME STATUS ROLES AGE VERSION
edge-node Ready <none> 15m v1.17.0
edge-node2 Ready <none> 16m v1.17.0
ubuntu Ready master 67d v1.17.0

namespace

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。
大型项目、团队、场合可使用,少量不用。

技术总结

命令方式

1
2
3
4
5
kubectl create namespace latelee

kubectl delete namespace latelee

kubectl get ns

实验

yaml文件创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: v1
kind: Namespace
metadata:
name: latelee
labels:
name: latelee
who: Late-Lee
---

apiVersion: v1
kind: Namespace
metadata:
name: development
labels:
name: development

---

apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
name: production

创建删除:

1
2
3
kubectl apply -f namespace.yaml

kubectl delete -f namespace.yaml

查看:

1
2
3
kubectl get ns --show-labels

kubectl get ns -l name=latelee

切换namespace

1
2
3
4
5
6
7
8
9
10
11
# kubectl config current-context
输出:
kubernetes-admin@kubernetes

# kubectl config view
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes

信息:当前上下文为 kubernetes-admin@kubernetes,集群名为kubernetes,用户为kubernetes-admin

创建context。注意使用上述的context的clusster和user。

1
2
kubectl config set-context dev --namespace=development --cluster=kubernetes --user=kubernetes-admin
kubectl config set-context prod --namespace=production --cluster=kubernetes --user=kubernetes-admin

删除:

1
2
kubectl config delete-context dev
kubectl config delete-context prod

切换:

1
2
3
4
5
6
7
8
# kubectl config use-context dev
# kubectl config use-context prod

查看确认当前的上下文:
# kubectl config current-context

注:切换到原始的:
kubectl config use-context kubernetes-admin@kubernetes

创建pod。此处pod位于dev命名空间中。
切换到prod命名空间,发现不存在pod。

label

TODO:移不移到其它地方?

查看label:

1
```

kubectl label pods busybox-pod env=world
kubectl label pods nginx-pod env=hello

kubectl label pods nginx-pod env- // 删除label
`
用label过滤
kubectl get po –show-labels -l env=hello,app=nginx
kubectl get po –show-labels -l ‘env in (hello,world)’