kubectl的用法


kubectl get - 顯示資源列表

kubectl get 資源類型
獲取類型為Deployment的資源列表

[root@k8s-master-1 ~]kubectl get deployments

獲取類型為Pod的資源列表
[root@k8s-master-1 ~]kubectl get pods

獲取類型為Node的資源列表
[root@k8s-master-1 ~]kubectl get nodes

名稱空間
在命令后增加 -A 或 --all-namespaces 可查看所有 名稱空間中 的對象,使用參數 -n 可查看指定名稱空間的對象,如:
查看所有名稱空間的 Deployment

[root@k8s-master-1 ~]kubectl get deployments -A
[root@k8s-master-1 ~]kubectl get deployments --all-namespaces

查看 kube-system 名稱空間的 Deployment

[root@k8s-master-1 ~]kubectl get deployments -n kube-system

kubectl describe - 顯示有關資源的詳細信息
kubectl describe 資源類型 資源名稱
查看名稱為nginx-XXXXXX的Pod的信息

[root@k8s-master-1 ~]kubectl describe pod nginx-XXXXXX

查看名稱為nginx的Deployment的信息

[root@k8s-master-1 ~]kubectl describe deployment nginx

kubectl logs - 查看pod中的容器的打印日志(和命令docker logs 類似)
kubectl logs Pod名稱
查看名稱為nginx-pod的Pod內的容器打印的日志
本案例中的 nginx-pod 沒有輸出日志,所以您看到的結果是空的

[root@k8s-master-1 ~]kubectl logs -f nginx-pod

kubectl exec - 在pod中的容器環境內執行命令(和命令docker exec 類似)
kubectl exec Pod名稱 操作命令
在名稱為nginx-pod-xxxxxx的Pod中運行bash

[root@k8s-master-1 ~]kubectl exec -it nginx-pod-xxxxxx /bin/bash

指令性的命令行=======================
創建一個 Deployment 對象,以運行一個 nginx 實例:
[root@k8s-master-1 ~]kubectl run nginx --image nginx
這樣創建的pod可以用如下命令刪除:
[root@k8s-master-1 ~]# kubectl delete pod nginx-1-6664c49886-hgjlt
用deployment創建的pod:
[root@k8s-master-1 ~]# kubectl create deployment nginx --image nginx
通過配置文件創建對象:
[root@k8s-master-1 ~]# kubectl create -f nginx.yaml
刪除兩個配置文件中的對象:
[root@k8s-master-1 ~]# kubectl delete -f nginx.yaml -f redis.yaml
直接使用配置文件中的對象定義,替換Kubernetes中對應的對象:
[root@k8s-master-1 ~]# kubectl replace -f nginx.yaml

查看哪些 Kubernetes 對象在名稱空間里,哪些不在:
[root@k8s-master-1 ~]# kubectl api-resources --namespaced=true
[root@k8s-master-1 ~]# kubectl api-resources --namespaced=false

========使用名稱空間共享集群

查看集群中的名稱空間列表:
[root@k8s-master-1 ~]# kubectl get namespaces
輸出結果如下所示:
NAME STATUS AGE
calico-system Active 42h
default Active 42h
demo-test Active 16m
kube-node-lease Active 42h
kube-public Active 42h
kube-system Active 42h
tigera-operator Active 42h

Kubernetes 安裝成功后,默認有初始化了三個名稱空間:
.default 默認名稱空間,如果 Kubernetes 對象中不定義 metadata.namespace 字段,該對象將放在此名稱空間下
.kube-system Kubernetes系統創建的對象放在此名稱空間下
.kube-public 安裝集群是自動創建,並且所有用戶都是可以讀取的(即使是那些未登錄的用戶)。主要是為集群預留的。
查看名稱空間的概要信息:
[root@k8s-master-1 ~]# kubectl describe namespaces kube-system
輸出結果如下所示:
Name: kube-system
Labels:
Annotations:
Status: Active

No resource quota.
No LimitRange resource.
--->Resource quota 匯總了名稱空間中使用的資源總量,並指定了集群管理員定義該名稱空間最多可以使用的資源量
--->Limit range 定義了名稱空間中某種具體的資源類型的最大、最小值

創建名稱空間

(1)通過 yaml 文件,創建文件 my-namespace.yaml 內容如下:

apiVersion: v1
kind: Namespace
metadata:
name: yuanye

[root@k8s-master-1 y]# kubectl create -f ./name1.yaml
[root@k8s-master-1 y]# kubectl get namespaces
NAME STATUS AGE
calico-system Active 43h
default Active 43h
demo-test Active 30m
kube-node-lease Active 43h
kube-public Active 43h
kube-system Active 43h
tigera-operator Active 43h
yuanye Active 76s

(2)直接使用命令創建名稱空間:
[root@k8s-master-1 y]# kubectl create namespace y1
namespace/y1 created

刪除名稱空間

[root@k8s-master-1 y]# kubectl delete namespaces y1
namespace "y1" deleted

理解 default 名稱空間

默認情況下,安裝Kubernetes集群時,會初始化一個 default 名稱空間,用來將承載那些未指定名稱空間的 Pod、Service、Deployment等對象

創建新的名稱空

[root@k8s-master-1 y]# vim dev.yaml
apiVersion: v1
kind: Namespace
metadata:
name: development
labels:
name: development

[root@k8s-master-1 y]# vim prod.yaml
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
name: production
[root@k8s-master-1 y]# kubectl create -f ./prod.yaml
[root@k8s-master-1 y]# kubectl get namespaces --show-labels
NAME STATUS AGE LABELS
calico-system Active 43h name=calico-system
default Active 43h
demo-test Active 48m
development Active 8m10s name=development
kube-node-lease Active 43h
kube-public Active 43h
kube-system Active 43h
production Active 7m59s name=production
tigera-operator Active 43h name=tigera-operator

kubectl run nginx --image=nginx --namespace=<您的名稱空間>

設置名稱空間偏好

可以通過 set-context 命令改變當前 kubectl 上下文 的名稱空間,后續所有命令都默認在此名稱空間下執行。

kubectl config set-context --current --namespace=<您的名稱空間>

驗證結果

**kubectl config view --minify | grep namespace: **

查看哪些 Kubernetes 對象在名稱空間里,哪些不在:

在名稱空間里

kubectl api-resources --namespaced=true

不在名稱空間里

**kubectl api-resources --namespaced=false **

------------------kubectl命令出現【The connection to the server localhost:8080 was refused - did you specify the right host or port?】的解決方法:--------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM