應(yīng)用鏡像
成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的十多年時間我們累計服務(wù)了上千家以及全國政企客戶,如OPP膠袋等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致稱贊。應(yīng)用鏡像是chart包的核心,必須包含:鏡像倉庫地址、鏡像名稱、鏡像版本,values.yaml字段規(guī)范如下:
repository: ??hub:?docker.io ??image:?gitlab/gitlab-ce ??tag:?11.1.4-ce.0 deployment中引用: image:?{{?.Values.repository.hub?}}/{{?.Values.repository.image?}}:{{?.Values.repository.tag?}}探針
應(yīng)用的探針用于檢測該應(yīng)用是否健康,是否準備好對外提供服務(wù)。健康狀況是非常關(guān)鍵的屬性,因此每個應(yīng)用必須都明確表示如何進行健康檢測。
values.yaml文件必須包含以下探針屬性:
livenessProbe:?#?存活探針 ???enabled:?true ???path:?/??#?心跳檢測的接口,默認都是httpGet請求 ???initialDelaySeconds:?30?#?容器啟動后第一次執(zhí)行探測是需要等待多少秒。 ???periodSeconds:?60?#?執(zhí)行探測的頻率。默認是10秒,最小1秒。 ???timeoutSeconds:?5?#?探測超時時間。默認1秒,最小1秒。 ???successThreshold:?1?#?探測失敗后,最少連續(xù)探測成功多少次才被認定為成功。默認是1 ???failureThreshold:?5?#?探測成功后,最少連續(xù)探測失敗多少次才被認定為失敗。默認是3 ?readinessProbe:?#?就緒探針 ???enabled:?true ???path:?/??#?心跳檢測的接口,默認都是httpGet請求 ???initialDelaySeconds:?10 ???periodSeconds:?10 ???timeoutSeconds:?5 ???successThreshold:?1 ???failureThreshold:?5deployment.yaml文件引用探針如下:
{{-?if?.Values.livenessProbe.enabled?}} livenessProbe: ??initialDelaySeconds:?{{?.Values.livenessProbe.initialDelaySeconds?}} ??periodSeconds:?{{?.Values.livenessProbe.periodSeconds?}} ??timeoutSeconds:?{{?.Values.livenessProbe.timeoutSeconds?}} ??successThreshold:?{{?.Values.livenessProbe.successThreshold?}} ??failureThreshold:?{{?.Values.livenessProbe.failureThreshold?}} ??httpGet: ??????path:?{{?.Values.livenessProbe.path?}} ??????port:?http {{-?end?}} {{-?if?.Values.readinessProbe.enabled?}} readinessProbe: ??initialDelaySeconds:?{{?.Values.readinessProbe.initialDelaySeconds?}} ??periodSeconds:?{{?.Values.readinessProbe.periodSeconds?}} ??timeoutSeconds:?{{?.Values.readinessProbe.timeoutSeconds?}} ??successThreshold:?{{?.Values.readinessProbe.successThreshold?}} ??failureThreshold:?{{?.Values.readinessProbe.failureThreshold?}} ??httpGet: ??????path:?{{.Values.readinessProbe.path?}} ??????port:?http {{-?end?}}資源限制
每個應(yīng)用都需要使用到CPU和內(nèi)存資源,如果不加以明確說明,則會導致資源的無畏浪費,并且在資源不足時第一時間就被回收。
因此應(yīng)用都應(yīng)當明確申明自己所需的資源大小。
values.yaml文件包含以下屬性:
resources: ??requests:??#?聲明最少使用的資源,不夠的話則應(yīng)用無法啟動成功 ????memory:?256Mi ????cpu:?100m ??limits:????#?聲明大使用的資源,超過即重啟應(yīng)用pod ????memory:?256Mi ????cpu:?100m持久化存儲
應(yīng)用如果不使用持久化存儲,那么當應(yīng)用重啟的時候,之前保存的數(shù)據(jù)將會都清空。在web無狀態(tài)應(yīng)用中,這是保持環(huán)境干凈很好的一種方式。
但是如果我們應(yīng)用有數(shù)據(jù)需要持久保留的話,就需要使用到持久化存儲了。以下是持久化存儲規(guī)范:
values.yaml文件需包含以下屬性:
persistence: ??enabled:?true ??local: ????enabled:?false?#?是否啟用本地存儲 ????name:?gitlab-pg??#?對應(yīng)本地存儲名稱 ??storageClass:?"nfs-dynamic-class"????#?集群共享存儲 ??accessMode:?ReadWriteOnce?#?存儲訪問模式 ??size:?30Mi???#?聲明所需存儲的大小 ??annotations:?{}templates目錄下新建auto-pvc.yaml文件,這里之所以要加一個auto前綴就是為了保證安裝時首先執(zhí)行安裝pvc,默認helm是安裝文件名順序來執(zhí)行安裝的。
內(nèi)容如下:
{{-?if?and?.Values.persistence.enabled?(not?.Values.persistence.existingClaim)?}} kind:?PersistentVolumeClaim apiVersion:?v1 metadata: ??name:?{{?.Release.Name?}}-pvc {{-?with?.Values.persistence.annotations??}} ??annotations: {{?toYaml?.?|?indent?4?}} {{-?end?}} ??labels: ????app:?{{?.Release.Name?}} spec: {{-?if?.Values.persistence.local.enabled?}} ??volumeName:?"{{?.Values.persistence.local.name?}}" {{-?end?}} ??accessModes: ????-?{{?.Values.persistence.accessMode?|?quote?}} ??resources: ????requests: ??????storage:?{{?.Values.persistence.size?|?quote?}} {{-?if?.Values.persistence.storageClass?}} {{-?if?(eq?"-"?.Values.persistence.storageClass)?}} ??storageClassName:?"" {{-?else?}} ??storageClassName:?"{{?.Values.persistence.storageClass?}}" {{-?end?}} {{-?end?}} {{-?end?}}最后根據(jù)應(yīng)用需要讀寫的路徑,掛載到容器內(nèi),修改deployment.yaml文件,添加以下內(nèi)容:
volumes: -?name:?data ??{{-?if?.Values.persistence.enabled?}} ??persistentVolumeClaim: ????claimName:?{{?.Release.Name?}}-pvc ??{{-?else?}} ??emptyDir:?{} ??{{-?end?}}# containers子標簽中添加
volumeMounts: -?name:?data ??mountPath:?/mnt?#?應(yīng)用容器內(nèi)需要讀寫的路徑本地存儲
我們以后有很多應(yīng)用都需要支持本地存儲,本地存儲修改內(nèi)容如下:
values.yaml persistence: ??enabled:?true ??local: ????enabled:?true????#?啟用本地存儲 ????name:?gitlab-pg??#?對應(yīng)本地存儲名稱 ??accessMode:?ReadWriteOnce ??size:?20Gi ??storageClass:?"-"??#?取消共享存儲 ??annotations:?{} nodeSelector: ??kubernetes.io/hostname:?10.160.144.72??#?對應(yīng)本地運行主機安全
設(shè)置Pod運行的用戶,一般情況為了安全起見,容器內(nèi)不建議使用root用戶進行運行。但是如果需要使用本地存儲,那么就必須要使用root用戶運行了。
另外在使用共享存儲時,可以將usePodSecurityContext設(shè)置為false。
設(shè)置以root運行,在values.yaml文件添加:
security: ??usePodSecurityContext:?true ??runAsUser:?0 ??fsGroup:?0在deployment.yaml文件中添加:
{{-?if?.Values.security.usePodSecurityContext?}} ??????securityContext: ????????runAsUser:?{{?default?0?.Values.security.runAsUser?}} {{-?if?and?(.Values.security.runAsUser)?(.Values.security.fsGroup)?}} ????????fsGroup:?{{?.Values.security.fsGroup?}} {{-?end?}} {{-?end?}}另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。