[root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d14h #自动创建 dev Active 39h kube-node-lease Active 2d14h #自动创建 kube-public Active 2d14h #自动创建 kube-system Active 2d14h #自动创建 kubernetes-dashboard Active 2d14h test Active 23h
default:所有未指定的Namespace的对象都会被分配在default命名空间。
kube-node-lease:集群节点之间的心跳维护,v1.13开始引入。
kube-public:此命名空间的资源可以被所有人访问(包括未认证用户)。
kube-system:所有由kubernetes系统创建的资源都处于这个命名空间。
2.2 应用示例
示例:查看所有的命名空间
1 2 3 4 5 6 7 8 9
[root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d14h dev Active 39h kube-node-lease Active 2d14h kube-public Active 2d14h kube-system Active 2d14h kubernetes-dashboard Active 2d14h test Active 23h
示例:查看指定的命名空间
1 2 3
[root@master ~]# kubectl get ns default NAME STATUS AGE default Active 2d14h
示例:指定命名空间的输出格式
1 2 3
[root@master ~]# kubectl get ns default -o wide NAME STATUS AGE default Active 2d14h
[root@master ~]# kubectl create ns dev namespace/dev created [root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d14h dev Active 45s kube-node-lease Active 2d14h kube-public Active 2d14h kube-system Active 2d14h kubernetes-dashboard Active 2d14h
示例:删除命名空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
[root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d14h dev Active 45s kube-node-lease Active 2d14h kube-public Active 2d14h kube-system Active 2d14h kubernetes-dashboard Active 2d14h [root@master ~]# kubectl delete ns dev namespace "dev" deleted [root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d15h kube-node-lease Active 2d15h kube-public Active 2d15h kube-system Active 2d15h kubernetes-dashboard Active 2d14h
[root@master ~]# cat ns-dev.yaml apiVersion: v1 kind: Namespace metadata: name: dev [root@master ~]# kubectl create -f ns-dev.yaml namespace/dev created [root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d15h dev Active 4s kube-node-lease Active 2d15h kube-public Active 2d15h kube-system Active 2d15h kubernetes-dashboard Active 2d14h [root@master ~]# kubectl delete -f ns-dev.yaml namespace "dev" deleted [root@master ~]# kubectl get ns NAME STATUS AGE default Active 2d15h kube-node-lease Active 2d15h kube-public Active 2d15h kube-system Active 2d15h kubernetes-dashboard Active 2d14h
[root@master ~]# kubectl describe pods -n dev Name: nginx Namespace: dev Priority: 0 Node: node2/192.168.20.124 Start Time: Fri, 20 May 2022 20:29:32 +0000 Labels: run=nginx Annotations: <none> Status: Running IP: 10.244.2.13 IPs: IP: 10.244.2.13 Containers: nginx: Container ID: docker://a524a5ec4c57ed61996ef2e06580cafe19254aa2ed2ac079a07e5e0e1bfda589 Image: 192.168.20.119/library/nginx:latest Image ID: docker-pullable://192.168.20.119/library/nginx@sha256:416d511ffa63777489af47f250b70d1570e428b67666567085f2bece3571ad83 Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 20 May 2022 20:29:33 +0000 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-chm54 (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: default-token-chm54: Type: Secret (a volume populated by a Secret) SecretName: default-token-chm54 Optional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events: Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m3s default-scheduler Successfully assigned dev/nginx to node2 Normal Pulling 2m2s kubelet, node2 Pulling image "192.168.20.119/library/nginx:latest" Normal Pulled 2m2s kubelet, node2 Successfully pulled image "192.168.20.119/library/nginx:latest" Normal Created 2m2s kubelet, node2 Created container nginx Normal Started 2m2s kubelet, node2 Started container nginx
[root@master ~]# kubectl get pods -o wide -n dev NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 1/1 Running 0 3m18s 10.244.2.13 node2 <none> <none> [root@master ~]# curl 10.244.2.13:80 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p>
<p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p> </body> </html>
语法:删除指定的Pod
1 2 3 4
[root@master ~]# kubectl delete pods nginx -n dev pod "nginx" deleted [root@master ~]# kubectl get pods -n dev No resources found in dev namespace.
[root@master ~]# cat pod-nginx.yaml apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev spec: containers:
- image: 192.168.20.119/library/nginx:latest imagePullPolicy: IfNotPresent name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP [root@master ~]# kubectl create -f pod-nginx.yaml pod/nginx created [root@master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 6s [root@master ~]# kubectl delete -f pod-nginx.yaml pod "nginx" deleted [root@master ~]# kubectl get pods -n dev No resources found in dev namespace.
[root@master ~]# kubectl label pod nginx version=2.0 -n dev pod/nginx labeled [root@master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 13m version=2.0
语法:更新资源的标签
1 2 3 4 5
[root@master ~]# kubectl label pod nginx version=3.0 -n dev --overwrite pod/nginx labeled [root@master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 15m version=3.0
示例:显示Nginx的Pod的标签
1 2 3
[root@master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 15m version=3.0
语法:筛选标签
1 2 3
[root@master ~]# kubectl get pods -l version=3.0 -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 16m version=3.0
语法:删除标签
1 2 3 4 5
[root@master ~]# kubectl label pods nginx -n dev version- pod/nginx labeled [root@master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 18m <none>
[root@master ~]# cat pod-nginx.yaml apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev labels: version: "3.0" env: "test" spec: containers: - image: 192.168.20.119/library/nginx:latest imagePullPolicy: IfNotPresent name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP [root@master ~]# kubectl apply -f pod-nginx.yaml Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply pod/nginx configured [root@master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 0 20m env=test,version=3.0
特别注意:在v1.18版之后,kubectl run nginx –image=nginx –replicas=2 –port=80,会反馈Flag –replicas has been deprecated, has no effect and will be removed in the future,并且只会创建一个Nginx容器实例。
示例:在名称为test的命名空间下创建名为nginx的deployment
1 2 3 4 5 6 7
[root@master ~]# kubectl create ns test namespace/test created [root@master ~]# kubectl create deploy nginx --image=192.168.20.119/library/nginx:latest -n test deployment.apps/nginx created [root@master ~]# kubectl get deploy -n test NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 18s
示例:在名称为test的命名空间下根据名为nginx的deployment创建3个Pod
1 2 3 4 5 6 7
[root@master ~]# kubectl scale deploy nginx --replicas=3 -n test deployment.apps/nginx scaled [root@master ~]# kubectl get pods -n test NAME READY STATUS RESTARTS AGE nginx-56669589d9-h67ng 1/1 Running 0 3s nginx-56669589d9-l2vb5 1/1 Running 0 3s nginx-56669589d9-lmp9k 1/1 Running 0 2m55s
[root@master ~]# kubectl describe deploy nginx -n dev Name: nginx Namespace: dev CreationTimestamp: Fri, 20 May 2022 22:59:19 +0000 Labels: <none> Annotations: deployment.kubernetes.io/revision: 1 Selector: run=nginx Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: run=nginx Containers: nginx: Image: 192.168.20.119/library/nginx:latest Port: 80/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: nginx-85dbb646 (3/3 replicas created) Events: Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 2m17s deployment-controller Scaled up replica set nginx-85dbb646 to 3
示例:删除名为dev的namespace下的名为nginx的deployment
1 2 3 4
[root@master ~]# kubectl delete deploy nginx -n dev deployment.apps "nginx" deleted [root@master ~]# kubectl get pods -n dev No resources found in dev namespace.
[root@master ~]# kubectl get svc -n dev -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR svc-nginx1 ClusterIP 10.103.119.55 <none> 80/TCP 20s run=nginx
[root@master ~]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx1 ClusterIP 10.103.119.55 <none> 80/TCP 37m svc-nginx2 NodePort 10.105.235.109 <none> 80:30763/TCP 12s
6.2.3 删除服务
示例:删除服务
1 2 3 4 5
[root@master ~]# kubectl delete svc svc-nginx1 -n dev service "svc-nginx1" deleted [root@master ~]# kubectl get svc -n dev NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc-nginx2 NodePort 10.105.235.109 <none> 80:30763/TCP 3m35s