一、命名空间 (namespace)
Namespace是对一组资源和对象的抽象集合.
常见的 pod, service, deployment 等都是属于某一个namespace的默认是 default)
不是所有资源都属于namespace,如nodes, persistent volume, namespace 等资源则不属于任何 namespace
二、查看namespace
kubectl get namespaces
[root@master ~]# kubectl get namespaces #namespaces可以简写为namespace或ns
NAME STATUS AGE
default Active 2d6h # 所有未指定 Namespace的对象都会被默认分配在default命名空间
kube-node-lease Active 2d6h
kube-public Active 2d6h # 此命名空间下的资源 可以被所有人访问
kube-system Active 2d6h # 所有由Kubernetes 系统创建的资源都处于这个命名空间
三、查看nmespace里的资源
使用kubectl get all --namespace=命名空间名称可以查看此命名空间 下的所有资源
[root@k8s-master01 ~]# kubectl get all --namespace=kube-system
NAME READY STATUS RESTARTS AGE
pod/coredns-57d4cbf879-9xxfd 1/1 Running 3 41h
pod/coredns-57d4cbf879-dq5kk 1/1 Running 3 41h
pod/etcd-k8s-master01 1/1 Running 3 41h
pod/etcd-k8s-master02 1/1 Running 3 41h
pod/etcd-k8s-master03 1/1 Running 3 41h
pod/kube-apiserver-k8s-master01 1/1 Running 4 41h
pod/kube-apiserver-k8s-master02 1/1 Running 3 41h
pod/kube-apiserver-k8s-master03 1/1 Running 5 41h
pod/kube-controller-manager-k8s-master01 1/1 Running 3 41h
pod/kube-controller-manager-k8s-master02 1/1 Running 3 41h
pod/kube-controller-manager-k8s-master03 1/1 Running 3 41h
pod/kube-proxy-8d4ms 1/1 Running 3 41h
pod/kube-proxy-d2725 1/1 Running 2 41h
pod/kube-proxy-ldmsj 1/1 Running 3 41h
pod/kube-proxy-mcsqk 1/1 Running 2 41h
pod/kube-proxy-slt7g 1/1 Running 2 41h
pod/kube-proxy-tpsrq 1/1 Running 3 41h
pod/kube-proxy-zfzd4 1/1 Running 2 41h
pod/kube-scheduler-k8s-master01 1/1 Running 4 41h
pod/kube-scheduler-k8s-master02 1/1 Running 3 41h
pod/kube-scheduler-k8s-master03 1/1 Running 3 41h
pod/metrics-server-6bf679fb9b-6wvhh 1/1 Running 3 41h
pod/metrics-server-6bf679fb9b-q2z2f 1/1 Running 3 41h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 41h
service/metrics-server ClusterIP 10.96.197.146 <none> 443/TCP 41h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-proxy 7 7 7 7 7 kubernetes.io/os=linux 41h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 41h
deployment.apps/metrics-server 2/2 2 2 41h
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-57d4cbf879 2 2 2 41h
replicaset.apps/metrics-server-6bf679fb9b 2 2 2 41h
使用kubectl get 资源类型 --namespace=命名空间名称可以查看此命名 空间下的对应的资源
kubectl get pod --namespace=kube-system
[root@k8s-master01 ~]# kubectl get pods -n gh-pod
NAME READY STATUS RESTARTS AGE
nginx-54fddcf8d5-6h8gp 1/1 Running 0 40h
nginx-54fddcf8d5-9rlc8 1/1 Running 0 40h
nginx-54fddcf8d5-lvb2g 1/1 Running 0 40h
nginx-54fddcf8d5-sz9nd 1/1 Running 0 40h
nginx-54fddcf8d5-t8mpc 1/1 Running 0 40h
[root@k8s-master01 ~]# kubectl get pods --namespace=gh-pod
NAME READY STATUS RESTARTS AGE
nginx-54fddcf8d5-6h8gp 1/1 Running 0 40h
nginx-54fddcf8d5-9rlc8 1/1 Running 0 40h
nginx-54fddcf8d5-lvb2g 1/1 Running 0 40h
nginx-54fddcf8d5-sz9nd 1/1 Running 0 40h
nginx-54fddcf8d5-t8mpc 1/1 Running 0 40h
使用kubectl get all查看某个命令空间下详细的pod资源
[root@k8s-master01 ~]# kubectl get all --namespace=gh-pod
NAME READY STATUS RESTARTS AGE
pod/nginx-54fddcf8d5-6h8gp 1/1 Running 0 40h
pod/nginx-54fddcf8d5-9rlc8 1/1 Running 0 40h
pod/nginx-54fddcf8d5-lvb2g 1/1 Running 0 40h
pod/nginx-54fddcf8d5-sz9nd 1/1 Running 0 40h
pod/nginx-54fddcf8d5-t8mpc 1/1 Running 0 40h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx NodePort 10.103.122.241 <none> 80:32037/TCP 40h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 5/5 5 5 40h
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-54fddcf8d5 5 5 5 40h
[root@k8s-master01 ~]# kubectl get all -n gh-pod
NAME READY STATUS RESTARTS AGE
pod/nginx-54fddcf8d5-6h8gp 1/1 Running 0 40h
pod/nginx-54fddcf8d5-9rlc8 1/1 Running 0 40h
pod/nginx-54fddcf8d5-lvb2g 1/1 Running 0 40h
pod/nginx-54fddcf8d5-sz9nd 1/1 Running 0 40h
pod/nginx-54fddcf8d5-t8mpc 1/1 Running 0 40h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx NodePort 10.103.122.241 <none> 80:32037/TCP 40h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 5/5 5 5 40h
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-54fddcf8d5 5 5 5 40h
使用kubectl get pods -A查看所有命名空间下运行的pod
[root@k8s-master01 ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
calico-apiserver calico-apiserver-9499956d-ncqxx 1/1 Running 7 41h
calico-apiserver calico-apiserver-9499956d-z2hls 1/1 Running 7 41h
calico-system calico-kube-controllers-77b5cb49c9-dwvqs 1/1 Running 4 41h
calico-system calico-node-28dw4 1/1 Running 3 41h
calico-system calico-node-597vh 1/1 Running 2 41h
calico-system calico-node-5nlf6 1/1 Running 2 41h
calico-system calico-node-6c7t6 1/1 Running 4 41h
calico-system calico-node-7572t 1/1 Running 3 41h
calico-system calico-node-cpj49 1/1 Running 5 41h
calico-system calico-node-jg9jm 1/1 Running 2 41h
calico-system calico-typha-5f8fcbcdf9-7ftx5 1/1 Running 3 41h
calico-system calico-typha-5f8fcbcdf9-vctgx 1/1 Running 4 41h
calico-system calico-typha-5f8fcbcdf9-zgcvv 1/1 Running 4 41h
gh-pod nginx-54fddcf8d5-6h8gp 1/1 Running 0 40h
gh-pod nginx-54fddcf8d5-9rlc8 1/1 Running 0 40h
gh-pod nginx-54fddcf8d5-lvb2g 1/1 Running 0 40h
gh-pod nginx-54fddcf8d5-sz9nd 1/1 Running 0 40h
gh-pod nginx-54fddcf8d5-t8mpc 1/1 Running 0 40h
kube-system coredns-57d4cbf879-9xxfd 1/1 Running 3 41h
kube-system coredns-57d4cbf879-dq5kk 1/1 Running 3 41h
kube-system etcd-k8s-master01 1/1 Running 3 41h
kube-system etcd-k8s-master02 1/1 Running 3 41h
kube-system etcd-k8s-master03 1/1 Running 3 41h
kube-system kube-apiserver-k8s-master01 1/1 Running 4 41h
kube-system kube-apiserver-k8s-master02 1/1 Running 3 41h
kube-system kube-apiserver-k8s-master03 1/1 Running 5 41h
kube-system kube-controller-manager-k8s-master01 1/1 Running 3 41h
kube-system kube-controller-manager-k8s-master02 1/1 Running 3 41h
kube-system kube-controller-manager-k8s-master03 1/1 Running 3 41h
kube-system kube-proxy-8d4ms 1/1 Running 3 41h
kube-system kube-proxy-d2725 1/1 Running 2 41h
kube-system kube-proxy-ldmsj 1/1 Running 3 41h
kube-system kube-proxy-mcsqk 1/1 Running 2 41h
kube-system kube-proxy-slt7g 1/1 Running 2 41h
kube-system kube-proxy-tpsrq 1/1 Running 3 41h
kube-system kube-proxy-zfzd4 1/1 Running 2 41h
kube-system kube-scheduler-k8s-master01 1/1 Running 4 41h
kube-system kube-scheduler-k8s-master02 1/1 Running 3 41h
kube-system kube-scheduler-k8s-master03 1/1 Running 3 41h
kube-system metrics-server-6bf679fb9b-6wvhh 1/1 Running 3 41h
kube-system metrics-server-6bf679fb9b-q2z2f 1/1 Running 3 41h
kuboard kuboard-agent-2-6f94fbc8c6-47888 1/1 Running 6 41h
kuboard kuboard-agent-7fbf4df7f6-crk4b 1/1 Running 9 41h
kuboard kuboard-etcd-kl7bx 1/1 Running 3 41h
kuboard kuboard-etcd-lxhdm 1/1 Running 3 41h
kuboard kuboard-etcd-wwrbm 1/1 Running 3 41h
kuboard kuboard-pv-browser-5982g 2/2 Running 208 40h
kuboard kuboard-pv-browser-8w948 2/2 Running 209 40h
kuboard kuboard-pv-browser-f9s57 2/2 Running 209 40h
kuboard kuboard-pv-browser-mrfjm 2/2 Running 208 40h
kuboard kuboard-pv-browser-qb6hq 2/2 Running 208 40h
kuboard kuboard-pv-browser-rl7lw 2/2 Running 209 40h
kuboard kuboard-pv-browser-xgh89 2/2 Running 208 40h
kuboard kuboard-questdb-85547c8f8d-bblkp 1/1 Running 3 41h
kuboard kuboard-v3-5fc46b5557-h9lk8 1/1 Running 3 41h
tigera-operator tigera-operator-6fdc4c585-hn7k8 1/1 Running 5 41h
三、创建namespace
1.命令创建
[root@k8s-master01 ~]# kubectl create namespace fh
namespace/fh created
[root@k8s-master01 ~]# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 41h
calico-system Active 41h
default Active 41h
fh Active 10s
gh-pod Active 40h
kube-node-lease Active 41h
kube-public Active 41h
kube-system Active 41h
kuboard Active 41h
tigera-operator Active 41h
2.YAML文件创建namespace
- k8s中几乎所有的资源都可以通这YAML编排来创建
- 可以使用kubectl edit 资源类型 资源名编辑资源的YAML语法
kubectl edit namespace ns1
- 也可以使用kubctl get 资源类型 资源名 -o yaml来查看
kubectl get ns ns1 -o yaml
- 还可以通过kubectl explain 资源类型看语法文档
kubectl explain namespace #查看namespace语法参数
kubectl explain namespace.metadata #查看namespace下级metadata的相关语法参数
kubectl explain namespace.metadata.name #查看namespace下级metadata的再下级name的相关语法参数
编写创建namespace的YAML文件
[root@k8s-master01 ~]# cat <<EOF > create_ns2.yaml
apiVersion: v1 #指定api版本号
kind: Namespace #类型为namespace
metadata: #定义namespace的元数据属性
name: ns2 #定义name属性为ns2
EOF
使用kubectl apply -f应用YAML文件
#检查YAML文件是否存在语法错误
[root@k8s-master01 ~]# kubectl apply -f create_ns2.yaml --dry-run=client
namespace/ns2 created (dry run)
#应用YAML文件
[root@k8s-master01 ~]# kubectl apply -f create_ns2.yaml
namespace/ns2 created
[root@k8s-master01 ~]# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 41h
calico-system Active 42h
default Active 42h
fh Active 23m
gh-pod Active 41h
kube-node-lease Active 42h
kube-public Active 42h
kube-system Active 42h
kuboard Active 41h
ns2 Active 5s
tigera-operator Active 42h
四、删除namespace
注意
- 删除一个namespace会自动删除所有属于该namespace的资源(类似mysql中drop库会删除库里的所有表一样,请慎重操作)
- default,kube-system,kube-public命名空间不可删除
1、命令行删除
[root@k8s-master01 ~]# kubectl delete namespaces fh
namespace "fh" deleted
[root@k8s-master01 ~]# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 42h
calico-system Active 42h
default Active 42h
gh-pod Active 41h
kube-node-lease Active 42h
kube-public Active 42h
kube-system Active 42h
kuboard Active 42h
ns2 Active 7m57s
tigera-operator Active 42h
2、从YAML文件删除
[root@k8s-master01 ~]# kubectl delete -f create_ns2.yaml
namespace "ns2" deleted
[root@k8s-master01 ~]# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 42h
calico-system Active 42h
default Active 42h
gh-pod Active 41h
kube-node-lease Active 42h
kube-public Active 42h
kube-system Active 42h
kuboard Active 42h
tigera-operator Active 42h
评论区