Kubernetes 命名空间简单地为对象名称提供了一个作用域。 此时我们并不会将所有资源都放在 同一个命名空间中,而是将它们组织到多个命名空间中,这样可以允许我们多次使 用相同的资源名称(跨不同的命名空间〉。
kubectl get ns
NAME STATUS AGE
default Active 5d19h
kube-node-lease Active 5d19h
kube-public Active 5d19h
kube-system Active 5d19h
创建节点,默认是放入default命名空间
get po --namespace default
NAME READY STATUS RESTARTS AGE
kubia-cfc9x 1/1 Running 3 5d16h
kubia-npd7q 1/1 Running 2 4d8h
kubia-pxdfb 1/1 Running 0 3d17h
…
ps:也可以使用 -n来代替 --namespace
方式1:
apiVers工on: vl
kind: Namespace # 这表示我们正在定义一 个命名空间
metadata:
name: custom-namespace
方式2:
kubectl create -f custom-namespace.yaml
kubectl create namespace custom-namespace
方式1:
如果想要在刚创建的命名空间中创建资源,可以选择在 metadata 宇段中添加 一个 namespace:custom-namespace 属性,
方式2:
也可以在使用 kubectl create 命令创建资源时指定命名空间 :
$ kubectl create -f kubia-manual.yaml -n custom-namespace
pod "kubia-manual" created
示例:
yaml文件
apiVersion: v1
kind: Pod
metadata:
name: nginx-p
namespace: yyf
spec:
containers:
- image: nginx
name: nginx-c
ports:
- containerPort: 80
protocol: TCP
创建pod
kubectl create -f kube-nginx-yaml
查看
kubectl get pods -n ypf
NAME READY STATUS RESTARTS AGE
nginx-p 1/1 Running 0 71s
nginx-rc-yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
namespace: ypf
spec:
replicas: 1
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
nginx-svc-yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service-nodeport
namespace: ypf
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
type: NodePort
selector:
name: nginx
kubectl create -f nginx-rc-yaml
kubectl create -f nginx-svc-yaml
kubectl get pod -n ypf #查看命名空间对应pod
NAME READY STATUS RESTARTS AGE
nginx-ldxf5 1/1 Running 0 55m
kubectl get svc -n ypf
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service-nodeport NodePort 10.1.101.93 80:32003/TCP 31m
访问:
curl 10.1.101.93
Welcome to nginx!
....
需要改变rc控制器和sercive的命名空间,服务才能生效,因为命名空间的隔离机制
删除命名空间
kubectl delete ns [命名空间名称]