目錄
- 一、yaml文法格式
- 1.1、yaml文法格式
- 1.2、檢視api資源版本标簽
- 1.3、寫一個yaml檔案demo
- 1.4、建立service服務對外提供通路并測試
- 1.5、kubectl --dry-run
- 1.6、将現有的資源生成模闆導出生成yaml檔案
- 二、詳解k8s中的port
- port
- nodeport
- targetport
- containerPort
kubecnetes支援yaml和json格式管理資源對象
json格式:主要用于api接口之間消息的傳遞
yaml格式:用于配置和管理,yaml是一種簡介的非标記性語言,内容格式人性化,較易讀
大小寫敏感
使用縮進表示層級關系
不支援tab鍵制表符縮進,隻是用空格縮進
縮進的空格數目不重要,隻要相同層級的元素左側對齊即可,通常開頭縮進兩個空格
符号字元後縮進一個空格,如冒号,逗号,短橫杠(-)等
“---”表示yaml格式,一個檔案的開始,用于分隔檔案
“#”表示注釋
kubectl api-version
#apps/v1 #如果是業務場景一般首選使用apps/v1
#apps/v1beta1 #帶有beta字樣的代表的是測試版本,不用再生産環境中
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5COxczN0YTNkFjYlRWMhNDOxYzX2IzMwcTM0AzLcFTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.png)
mkdir /opt/demo
cd demo/
vim nginx-deployment.yaml
apiVersion: apps/v1 #指定api版本标簽
kind: Deployment #定義資源的類型/角色,deployment為副本控制器,此處資源類型可以是Deployment、Job、Ingress、Service等
metadata: #定義資源的中繼資料資訊,比如資源的名稱、namespaces、标簽等資訊
name: nginx-deployment #定義資源的名稱,在同一個namespace空間中必須是惟一的
labels: #定義Deployment資源标簽
app: nginx
spec: #定義deployment資源需要的參數屬性,諸如是否在容器失敗時重新啟動容器的屬性
replicas: 3 #定義副本數量
selector: #定義标簽選擇器
matchLabels: #定義比對标簽
app: nginx #需與 .spec.template.metadata.labels定義的标簽保持一緻
template: #定義業務模闆,如果有多個副本,所有副本的屬性會按照模闆的相關配置進行比對
metadata:
labels: #定義pod副本将使用的标簽,需與.spec.template.metadata.labe定義的标簽保持一緻
app: nginx
spec:
containers: #定義容器屬性
- name: nginx #定義一個容器名,一個 -name定義一個容器
image: nginx:1.15.4 #定義容器使用的鏡像以及版本
ports:
- containerPort: 80 #定義容器的對外的端口
#建立資源對象
kubectl create -f nginx-deployment.yaml
#檢視建立的pod資源
kubectl get pod -o wide
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 12345
tartgetPort: 80
selector:
app: nginx-demo
#建立資源對象
kubectl create -f nginx-service.yaml
#檢視建立的service
kubectl get svc
#在浏覽器輸入nodeIP:nodeport通路
#kubectl run --dry-run 列印相應的API對象而不執行建立
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run
#檢視生成yaml格式
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml
#檢視生成json格式
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o json
#使用yaml格式導出生成模闆,并進行修改以及删除一些不必要的參數
kubectl run nginx-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml > nginx.test.yaml
kubectl get deployment/nginx-deployment --export -o yaml
#儲存到檔案中
kubectl get deployment/nginx-deployment --export -o yaml > deploy-test.yaml
#檢視字段幫助資訊,可一層層的檢視相關資源對象的幫助資訊
kubectl explain deployment.spec.template.spec.containers
或
kubectl explain pods.spec.containers
port是k8s叢集内部通路service的端口,即通過clusterIP:port可以從pod所在的node上通路到service
nodeport是外部通路k8s叢集中service的端口,通過nodeIP:nodePort可以從外部通路到某個service
targetport是pod端口,從port或nodeport來的流量經過kube-proxy反向代理負載均衡轉發到後端pod的targetport,最後進入容器
containerPort是pod内部容器的端口,targetport映射到containerPort