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の「ネームスペース切り替え」がまだスッと出てこない…