原創(chuàng)文檔編寫不易,未經(jīng)許可請勿轉(zhuǎn)載。文檔中有疑問的可以郵件聯(lián)系我。 郵箱:yinwanit@163.com
說明
記錄k8s中yaml文件編寫相關內(nèi)容。
k8s官網(wǎng)文檔庫:https://kubernetes.io/docs/home/
kubelet 命令參考:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
一、書寫格式
k8s中yaml文件結(jié)尾需以.yml或.yaml結(jié)尾。文件放置位置不做限定。
yaml文件中每行都嚴格遵守層級,同層級資源縮進相同,每個層級間推薦使用兩個空格進行縮進,不能使用tab鍵進行縮進。
yaml文件鍵值直接使用冒號作為分割線,冒號過后有且只有一個空格。
yaml文件采用駝峰的形式進行書寫,冒號左邊的第一個單詞小寫第二個單詞開始首字母大寫,冒號右邊每個單詞首字母大寫。參考標紅字體部分明顯可以區(qū)分。
apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: pod3 name: pod3 spec: containers: - image: busybox imagePullPolicy: IfNotPresent name: pod3 resources: {} dnsPolicy: ClusterFirst restartPolicy: Always status: {}
二、apiVersion版本與資源組
yaml文件首行為apiVersion及標注該yaml文件使用的版本。不同資源版本中資源使用方式和配置參數(shù)存在一定的差異。
apiVersion格式為:{Group}/{Version},Group代表Kubernetes API資源組的名稱,Version代表該組的API版本號。
使用?kubectl? api-versions 命令可以查看當前集群支撐的apiVersion信息。
不同apiVerson資源組中包含的kind資源不一樣。確定了要使用的kind過后需要明確知道哪個一個apiVersion中包含該kind資源,在yaml中的apiVersion行鍵入對應的資源組及版本信息。
?k8s apiversion分為四個類別:穩(wěn)定版(Stable)、Beta版(Beta)、Alpha版(Alpha)和Deprecated版(Deprecated)。
- Stable穩(wěn)定版通常只有在主版本發(fā)布時才會更新,是被支持且兼容的版本。
- Beta版可能包含一些已經(jīng)被定義好但還未成為穩(wěn)定版的功能,因此可能會在后續(xù)版本中被修改或刪除。
- Alpha版是一種開發(fā)中的版本類型,API架構(gòu)和功能都還在開發(fā)和完善過程中,通常不建議在生產(chǎn)系統(tǒng)中使用。
- Deprecated版是已經(jīng)被廢棄的版本,中止了維護和支持。
常見的均可在https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/workload-resources/中查看
僅展示部分apiVersion中的資源組及版本對應的kind資源。
2.1 工作負載資源組:
- v1:Pod、PodTemplate、ReplicationController、
- apps/v1:ReplicaSet、Deployment、StatefulSet、ControllerRevision、DaemonSet
- batch/v1:Job、CronJob
- autoscaling/v1:HorizontalPodAutoscaler
- autoscaling/v2:HorizontalPodAutoscaler
- scheduling.k8s.io/v1:PriorityClass
- resource.k8s.io/v1alpha2:PodSchedulingContext、ResourceClaim、ResourceClaimTemplate、ResourceClass
2.2 Service資源組:
- v1:Service、Endpoints?
- discovery.k8s.io/v1:EndpointSlice
- networking.k8s.io/v1:Ingress、IngressClass
2.3 配置和存儲資源組:
- v1:ConfigMap、Secret、Volume、PersistentVolumeClaim、PersistentVolume
- storage.k8s.io/v1:StorageClass、VolumeAttachment、CSIDriver、CSINode、CSIStorageCapacity
2.4 身份認證資源組:
- v1:ServiceAccount、
- authentication.k8s.io/v1:TokenRequest、TokenReview
- certificates.k8s.io/v1:CertificateSigningRequest
- certificates.k8s.io/v1alpha1:ClusterTrustBundle
2.5 策略資源組:
- v1:LimitRange、ResourceQuota
- networking.k8s.io/v1:NetworkPolicy
- policy/v1:PodDisruptionBudget
- networking.k8s.io/v1alpha1:IPAddress
2.6 集群資源組:
- v1:Node、Namespace、Binding、ComponentStatus
- events.k8s.io/v1:Event
- apiregistration.k8s.io/v1:APIService
- coordination.k8s.io/v1:Lease
- node.k8s.io/v1:RuntimeClass
- flowcontrol.apiserver.k8s.io/v1beta3:?FlowSchema、PriorityLevelConfiguration
- networking.k8s.io/v1alpha1:ClusterCIDR
三、標準模板獲取?
k8s環(huán)境中為了方便管理員快速的完成資源yaml文件編寫,盡快的上線應用。可以有三種方式獲取到某一個kind資源的編寫模板。
3.1 官網(wǎng)文檔中獲取
網(wǎng)址:https://kubernetes.io/zh-cn/docs/home/
在官方文檔中找到對應的kind中復制出標準的yaml配置文件模板。
3.2 命令生成
參考kubectl工作使用說明:https://kubernetes.io/zh-cn/docs/reference/kubectl/kubectl/
導出一個POD的標準模板,其中--dry-run表示不創(chuàng)建,只是進行語句檢查調(diào)試,client表示基本的格式、server表示完整的格式,一般情況下采用client生成的文件進行二次編寫。
# kubectl run pod01 --image=busybox --image-pull-policy=IfNotPresent --dry-run=client -o yaml > pod01_c.yaml
# kubectl run pod01 --image=busybox --image-pull-policy=IfNotPresent --dry-run=server -o yaml > pod01_s.yaml
Always:總是去網(wǎng)上拉取鏡像
Never:不使用網(wǎng)上的鏡像
IfNotPresent:優(yōu)先使用本地鏡像
--dry-run=server/client表示只模擬創(chuàng)建,用作檢查語法是否錯誤。client輸出比較簡潔的文本,server表示輸出比較詳細的文本。
3.3 現(xiàn)有資源生成
利用現(xiàn)在已經(jīng)存在的同kind類型資源導出模板
# kubectl get ds/calico-node -n kube-system -o yaml > ds01.yaml
四、資源創(chuàng)建幫助
在明確了apiVersion和kind,同時有了模板文件過后就可以進行yaml文件的編寫了。但對于新手來說或者一些不常用的kind,往往沒法記住其使用方法,則可使用命令查看對應apiVersion下kind的配置幫助文件。
查看pod的配置參數(shù)。
# kubectl explain --api-version=v1 pod
如果查看的資源還有下級配置則在可接著查看
# kubectl explain --api-version=v1 pod.metadata
其中資源配置中有三種類型:string、Object、integer,同時<>表示為必填參數(shù),[]表示為可選參數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-623601.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-623601.html
到了這里,關于K8S學習筆記-01(yaml文件編寫)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!