# Kubernetes集群YAML文件詳解
## 概述
k8s 集群中對資源管理和資源對象編排部署都可以通過聲明樣式(YAML)文件來解決,也就是可以把需要對資源對象操作編輯到YAML 格式文件中,我們把這種文件叫做資源清單文件,通過kubectl 命令直接使用資源清單文件就可以實現對大量的資源對象進行編排部署了。一般在我們開發的時候,都是通過配置YAML文件來部署集群的。
YAML文件:就是資源清單文件,用于資源編排
## YAML文件介紹
### YAML概述
YAML :仍是一種標記語言。為了強調這種語言以數據做為中心,而不是以標記語言為重點。
YAML 是一個可讀性高,用來表達數據序列的格式。
### YAML 基本語法
* 使用空格做為縮進
* 縮進的空格數目不重要,只要相同層級的元素左側對齊即可
* 低版本縮進時不允許使用Tab 鍵,只允許使用空格
* 使用#標識注釋,從這個字符一直到行尾,都會被解釋器忽略
* 使用 --- 表示新的yaml文件開始
### YAML 支持的數據結構
#### 對象
鍵值對的集合,又稱為映射(mapping) / 哈希(hashes) / 字典(dictionary)
```yaml
# 對象類型:對象的一組鍵值對,使用冒號結構表示
name: Tom
age: 18
# yaml 也允許另一種寫法,將所有鍵值對寫成一個行內對象
hash: {name: Tom, age: 18}
```
#### 數組
```bash
# 數組類型:一組連詞線開頭的行,構成一個數組
People
- Tom
- Jack
# 數組也可以采用行內表示法
People: [Tom, Jack]
```
## YAML文件組成部分
主要分為了兩部分,一個是控制器的定義 和 被控制的對象
### 控制器的定義

### 被控制的對象
包含一些 鏡像,版本、端口等

### 屬性說明
在一個YAML文件的控制器定義中,有很多屬性名稱
| 屬性名稱 | 介紹 |
| :--------: | :--------: |
| apiVersion | API版本 |
| kind | 資源類型 |
| metadata | 資源元數據 |
| spec | 資源規格 |
| replicas | 副本數量 |
| selector | 標簽選擇器 |
| template | Pod模板 |
| metadata | Pod元數據 |
| spec | Pod規格 |
| containers | 容器配置 |
## 如何快速編寫YAML文件
一般來說,我們很少自己手寫YAML文件,因為這里面涉及到了很多內容,我們一般都會借助工具來創建
### 使用kubectl create命令
這種方式一般用于資源沒有部署的時候,我們可以直接創建一個YAML配置文件
```bash
# 嘗試運行,并不會真正的創建鏡像
kubectl create deployment web --image=nginx -o yaml --dry-run
```
或者我們可以輸出到一個文件中
```bash
kubectl create deployment web --image=nginx -o yaml --dry-run > hello.yaml
```
然后我們就在文件中直接修改即可
### 使用kubectl get命令導出yaml文件
可以首先查看一個目前已經部署的鏡像
```bash
kubectl get deploy
```

然后我們導出 nginx的配置
```bash
kubectl get deploy nginx -o=yaml --export > nginx.yaml
```
然后會生成一個 `nginx.yaml` 的配置文件

- 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