# Kubernetes集群管理工具kubectl
## 概述
kubectl是Kubernetes集群的命令行工具,通過kubectl能夠對集群本身進行管理,并能夠在集群上進行容器化應用的安裝和部署
## 命令格式
命令格式如下
```bash
kubectl [command] [type] [name] [flags]
```
參數
- command:指定要對資源執行的操作,例如create、get、describe、delete
- type:指定資源類型,資源類型是大小寫敏感的,開發者能夠以單數 、復數 和 縮略的形式
例如:
```bash
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
```

- name:指定資源的名稱,名稱也是大小寫敏感的,如果省略名稱,則會顯示所有的資源,例如
```bash
kubectl get pods
```
- flags:指定可選的參數,例如,可用 -s 或者 -server參數指定Kubernetes API server的地址和端口
## 常見命令
### kubectl help 獲取更多信息
通過 help命令,能夠獲取幫助信息
```bash
# 獲取kubectl的命令
kubectl --help
# 獲取某個命令的介紹和使用
kubectl get --help
```
### 基礎命令
常見的基礎命令
| 命令 | 介紹 |
| :-----: | :--------------------------------------------: |
| create | 通過文件名或標準輸入創建資源 |
| expose | 將一個資源公開為一個新的Service |
| run | 在集群中運行一個特定的鏡像 |
| set | 在對象上設置特定的功能 |
| get | 顯示一個或多個資源 |
| explain | 文檔參考資料 |
| edit | 使用默認的編輯器編輯一個資源 |
| delete | 通過文件名,標準輸入,資源名稱或標簽來刪除資源 |
### 部署命令
| 命令 | 介紹 |
| :------------: | :------------------------------------------------: |
| rollout | 管理資源的發布 |
| rolling-update | 對給定的復制控制器滾動更新 |
| scale | 擴容或縮容Pod數量,Deployment、ReplicaSet、RC或Job |
| autoscale | 創建一個自動選擇擴容或縮容并設置Pod數量 |
### 集群管理命令
| 命令 | 介紹 |
| ------------ | ------------------------------ |
| certificate | 修改證書資源 |
| cluster-info | 顯示集群信息 |
| top | 顯示資源(CPU/M) |
| cordon | 標記節點不可調度 |
| uncordon | 標記節點可被調度 |
| drain | 驅逐節點上的應用,準備下線維護 |
| taint | 修改節點taint標記 |
| | |
### 故障和調試命令
| 命令 | 介紹 |
| :----------: | :----------------------------------------------------------: |
| describe | 顯示特定資源或資源組的詳細信息 |
| logs | 在一個Pod中打印一個容器日志,如果Pod只有一個容器,容器名稱是可選的 |
| attach | 附加到一個運行的容器 |
| exec | 執行命令到容器 |
| port-forward | 轉發一個或多個 |
| proxy | 運行一個proxy到Kubernetes API Server |
| cp | 拷貝文件或目錄到容器中 |
| auth | 檢查授權 |
### 其它命令
| 命令 | 介紹 |
| :----------: | :-------------------------------------------------: |
| apply | 通過文件名或標準輸入對資源應用配置 |
| patch | 使用補丁修改、更新資源的字段 |
| replace | 通過文件名或標準輸入替換一個資源 |
| convert | 不同的API版本之間轉換配置文件 |
| label | 更新資源上的標簽 |
| annotate | 更新資源上的注釋 |
| completion | 用于實現kubectl工具自動補全 |
| api-versions | 打印受支持的API版本 |
| config | 修改kubeconfig文件(用于訪問API,比如配置認證信息) |
| help | 所有命令幫助 |
| plugin | 運行一個命令行插件 |
| version | 打印客戶端和服務版本信息 |
### 目前使用的命令
```bash
# 創建一個nginx鏡像
kubectl create deployment nginx --image=nginx
# 對外暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看資源
kubectl get pod, svc
```
- Kubernetes簡介
- 搭建K8S集群前置知識
- 使用kubeadm方式搭建K8S集群
- 使用二進制方式搭建K8S集群
- Kubeadm和二進制方式對比
- Kubernetes集群管理工具kubectl
- Kubernetes集群YAML文件詳解
- Kubernetes核心技術Pod
- Kubernetes核心技術Controller
- Kubernetes核心技術Service
- Kubernetes控制器Controller詳解
- Kubernetes配置管理
- Kubernetes集群安全機制
- Kubernetes核心技術Ingress
- Kubernetes核心技術Helm
- Kubernetes持久化存儲
- Kubernetes集群資源監控
- Kubernetes搭建高可用集群
- Kubernetes容器交付介紹
- 使用kubeadm-ha腳本一鍵安裝K8S
- Kubernetes可視化界面kubesphere
- Kubernetes配置默認存儲類
- 使用Rancher搭建Kubernetes集群
- Kubernetes中的CRI