k8s-yml文件詳解


Nginx 業務 yaml 文件詳解:

cat /opt/linux-yml/nginx.yml

kind: Deployment #對象類型,是deployment控制器,kubectl explain Deployment
apiVersion: extensions/v1beta1  #指定這個對象屬於哪個api分組,它的API版本是多少,
								# kubectl explain Deployment.apiVersion
metadata:     #pod的元數據信息,kubectl explain Deployment.metadata
  labels:     #自定義pod的標簽,kubectl explain Deployment.metadata.labels
    app: linux-nginx-deployment-label #標簽名稱為app值為linux-nginx-deployment-label, 后面會用到此標簽
  name: linux-nginx-deployment        #pod的名稱 
  namespace: linux-ns                 #把pod的創建到指定的namespace,默認是default
spec:            #定義deployment中容器的詳細信息,kubectl explain Deployment.spec
  replicas: 1    #創建出的pod的副本數,即多少個pod,默認值為1 
  selector:      #定義標簽選擇器
    matchLabels: #定義匹配的標簽,必須要設置
      app: linux-nginx-selector   #匹配的目標標簽
  template:      #定義模板,必須定義,模板是起到描述要創建的pod的作用
    metadata:    #定義模板元數據
      labels:    #定義模板label,Deployment.spec.template.metadata.labels
        app: linux-nginx-selector   #定義標簽,必須等於 matchLabels 定義的標簽
    spec:          #定義pod信息
      containers:  #定義pod中容器列表,可以多個至少一個,pod不能動態增減容器(想新添加容器,需要把原有pod刪除,重新創建pod)
      - name: linux-nginx-container                      #容器名稱
        image: harbor.linux.com/web-images/nginx:1.14.2  #鏡像地址
        #command: ["/apps/tomcat/bin/run_tomcat.sh"]     #容器啟動執行的命令或腳本           
        #imagePullPolicy: IfNotPresent                   #本地有指定的鏡像,就不去harbor中拉取
        imagePullPolicy: Always    #拉取鏡像策略;不管本地有沒有所指定的鏡像,都去harbor拉取
        ports:                #定義容器端口列表
        - containerPort: 80   #定義一個端口
          protocol: TCP       #端口協議,TCP或者UDP
          name: http          #端口名稱
        - containerPort: 443  #定義一個端口
          protocol: TCP       #端口協議 
          name: https         #端口名稱
        env:                  #給容器傳遞配置的環境變量
        - name: "password"    #變量名稱。必須要用引號引起來
          value: "123456"     #當前變量的值
        - name: "age"         #另一個變量名稱 
          value: "18"         #另一個變量的值
        resources:            #對容器資源的請求設置和限制設置
          limits:             #硬限制;限制容器使用宿主機資源上限
            cpu: 2            #cpu的限制,單位為core數,可以寫0.5或者500m(毫核)等CPU壓縮值,1000毫核
            memory: 2Gi       #內存限制,單位可以為Mib/Gib,將用於docker run --memory參數
          requests:  #資源請求的設置;當構建pod時,過濾出哪些node節點的剩余資源符合下面所指定的值,則創建pod時,才有可能把pod往該node節點調度;如果不夠下面所指定的值,則創建pod時不會把pod往不符合要求的node上調度
            cpu: 1        #cpu請求數,容器啟動的初始可用數量,可以寫0.5或者500m等CPU壓縮值
            memory: 512Mi #內存請求大小,容器啟動的初始可用數量,用於調度pod時候使用

---
kind: Service    #對象類型為service;pod要想被外部訪問,就必須指定一個service,service會在宿主機打開一個nodeport;service不指定nodeport,則該service僅限於k8s內部調用	     
apiVersion: v1   #service API版本,service.apiVersion 
metadata:        #定義service元數據,service.metadata
  labels:        #自定義service的標簽,service.metadata.labels
    app: linux-nginx     #定義service標簽的內容
  name: linux-nginx-spec #定義service的名稱,此名稱會被DNS解析
  namespace: linux-ns    #該service隸屬於的namespaces名稱,即把service創建到哪個namespace里面,並且service必須與pod在同一個namespace中,否則在調用時,service找不到所調用的pod 
spec:               #定義service的詳細信息,service.spec
  type: NodePort    #NodePort表示在宿主機打開一個監聽端口;service的類型,定義服務的訪問方式,默認為ClusterIP(不會再宿主機打開一個監聽端口,只為k8s內部提供服務),service.spec.type
  ports:            #定義訪問端口, service.spec.ports
  - name: http      #定義一個端口名稱
    port: 80        #service的端口 
    protocol: TCP   #協議類型;service是k8s內部的一個傳輸層的負載均衡 
    targetPort: 80  #目標pod的端口 
    nodePort: 30001 #node節點暴露的端口
  - name: https     #SSL 端口
    port: 443       #service 443端口 
    protocol: TCP   #端口協議 
    targetPort: 443 #目標pod端口 
    nodePort: 30043 #node節點暴露的SSL端口
  selector:   #service的標簽選擇器,定義把用戶請求轉發給指定label標簽的pod;service會把符合label標簽的pod添加到后端可被調度的endpoint列表中
    app: linux-nginx-selector #將流量轉發到指定的pod上,須等於Deployment.spec.selector.matchLabels

注意事項

提前創建好yml文件,並創建好pod運行所需要的namespace的yml文件等資源,一般創建namespace的操作,會單獨存放在一個yml文件中

cat /opt/linux-yml/linux-ns.yml

apiVersion: v1     #API版本 
kind: Namespace    #類型為namespac 
metadata:          #定義元數據 
  name: linux-ns   #namespace名稱


免責聲明!

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



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