kubectxを使わずkubectlで済ます方法。
namespaceを作る
kubectl create
kubectl create namespace <namespace-name>で作る。
[zaki@k8s-master01 ~]$ kubectl create namespace sample1
namespace/sample1 created
[zaki@k8s-master01 ~]$ kubectl get namespace sample1
NAME STATUS AGE
sample1 Active 7s
[zaki@k8s-master01 ~]$ kubectl get namespace sample1 -o yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: "2020-04-20T21:54:27Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:phase: {}
manager: kubectl
operation: Update
time: "2020-04-20T21:54:27Z"
name: sample1
resourceVersion: "3454403"
selfLink: /api/v1/namespaces/sample1
uid: cb61dafd-3cc0-4ab0-a75f-3da006822a69
spec:
finalizers:
- kubernetes
status:
phase: Active
dry-run
dry-run -o yamlでマニフェストファイルの素を作る。
[zaki@k8s-master01 ~]$ kubectl create namespace sample2 --dry-run=client -o yaml
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
name: sample2
spec: {}
status: {}
※ 1.18だと--dry-runだけだと警告出る
[zaki@k8s-master01 ~]$ kubectl create namespace sample2 --dry-run -o yaml
W0421 06:55:44.596609 125716 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
name: sample2
spec: {}
status: {}
マニフェストから
apiVersion: v1 kind: Namespace metadata: name: sample2
[zaki@k8s-master01 namespace]$ kubectl apply -f namespace-sample2.yml
namespace/sample2 created
[zaki@k8s-master01 namespace]$ kubectl get ns sample2
NAME STATUS AGE
sample2 Active 4s
[zaki@k8s-master01 namespace]$ kubectl get ns sample2 -o yaml
apiVersion: v1
kind: Namespace
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"sample2"}}
creationTimestamp: "2020-04-20T21:56:51Z"
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:status:
f:phase: {}
manager: kubectl
operation: Update
time: "2020-04-20T21:56:51Z"
name: sample2
resourceVersion: "3454838"
selfLink: /api/v1/namespaces/sample2
uid: 51bfd092-2028-4e9f-b029-b5b0dcf1626a
spec:
finalizers:
- kubernetes
status:
phase: Active
namespace切り替え
ネームスペース一覧
[zaki@k8s-master01 namespace]$ kubectl get ns NAME STATUS AGE default Active 14d kube-node-lease Active 14d kube-public Active 14d kube-system Active 14d sample1 Active 13m sample2 Active 11m
現在はdefaultネームスペースで、そこのpod一覧
[zaki@k8s-master01 namespace]$ kubectl get pod NAME READY STATUS RESTARTS AGE sockserv-7d8777b75b-tpqdv 1/1 Running 0 14d [zaki@k8s-master01 namespace]$ kubectl get pod -n default NAME READY STATUS RESTARTS AGE sockserv-7d8777b75b-tpqdv 1/1 Running 0 14d
namespace切り替え
[zaki@k8s-master01 namespace]$ kubectl config set-context --current --namespace=sample1 Context "kubernetes-admin@kubernetes" modified. [zaki@k8s-master01 namespace]$ kubectl get pod No resources found in sample1 namespace.
namespace確認
[zaki@k8s-master01 namespace]$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-admin@kubernetes kubernetes kubernetes-admin sample1
sample1ネームスペースでサンプルpodをデプロイ
[zaki@k8s-master01 namespace]$ kubectl run sample-pod --image=httpd pod/sample-pod created [zaki@k8s-master01 namespace]$ kubectl get pod NAME READY STATUS RESTARTS AGE sample-pod 0/1 ContainerCreating 0 2s [zaki@k8s-master01 namespace]$ kubectl get pod NAME READY STATUS RESTARTS AGE sample-pod 1/1 Running 0 11s [zaki@k8s-master01 namespace]$ kubectl get pod -n sample1 NAME READY STATUS RESTARTS AGE sample-pod 1/1 Running 0 25s
namespace削除
kubectl delete
kubectl delete namespace <対象>で削除
[zaki@k8s-master01 namespace]$ kubectl delete namespace sample1 namespace "sample1" deleted [zaki@k8s-master01 namespace]$ kubectl get ns NAME STATUS AGE default Active 14d kube-node-lease Active 14d kube-public Active 14d kube-system Active 14d sample2 Active 5m7s
マニフェストから
applyしたマニフェストファイルがあるなら
[zaki@k8s-master01 namespace]$ kubectl delete -f namespace-sample2.yml namespace "sample2" deleted [zaki@k8s-master01 namespace]$ kubectl get ns NAME STATUS AGE default Active 14d kube-node-lease Active 14d kube-public Active 14d kube-system Active 14d
sample1で動かしてたpodも消えているか確認
[zaki@k8s-master01 namespace]$ kubectl get pod -A | grep -v kube-system NAMESPACE NAME READY STATUS RESTARTS AGE default sockserv-7d8777b75b-tpqdv 1/1 Running 0 14d
podも消える
OpenShiftだと
OpenShiftだとnamespaceを拡張したprojectというリソースがあり、これを操作すればOK。
作成
[zaki@okd4-manager ~]$ oc new-project sample
Now using project "sample" on server "https://api.okd4.naru.jp-z.jp:6443".
You can add applications to this project with the 'new-app' command. For example, try:
oc new-app ruby~https://github.com/sclorg/ruby-ex.git
to build a new example application in Python. Or use kubectl to deploy a simple Kubernetes application:
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
作成と同時にnamespaceも作成したprojectに切り替わる。
切り替え
切り替え単体はoc projectコマンド
[zaki@okd4-manager ~]$ oc project default Now using project "default" on server "https://api.okd4.naru.jp-z.jp:6443".
削除
これは普通に
[zaki@okd4-manager ~]$ oc delete project sample project.project.openshift.io "sample" deleted
namespaceと違うとこ
annotationsにpodを動作させるときのUIDとかのメタ情報が設定されている。
[zaki@okd4-manager ~]$ oc get project sample -o yaml
apiVersion: project.openshift.io/v1
kind: Project
metadata:
annotations:
openshift.io/description: ""
openshift.io/display-name: ""
openshift.io/requester: system:admin
openshift.io/sa.scc.mcs: s0:c24,c19
openshift.io/sa.scc.supplemental-groups: 1000590000/10000
openshift.io/sa.scc.uid-range: 1000590000/10000
creationTimestamp: "2020-04-20T22:09:19Z"
name: sample
resourceVersion: "453046"
selfLink: /apis/project.openshift.io/v1/projects/sample
uid: 301c3113-82bc-47d3-b0c8-df4d3fdc3577
spec:
finalizers:
- kubernetes
status:
phase: Active
環境
[zaki@k8s-master01 ~]$ kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.2", GitCommit:"52c56ce7a8272c798dbc29846288d7cd9fbae032", GitTreeState:"clean", BuildDate:"2020-04-16T11:56:40Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:50:46Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
kubectxはこちら
OpenShiftで育ったからK8sの「ネームスペース切り替え」がまだスッと出てこない…