本篇內(nèi)容介紹了“怎么使用無(wú)狀態(tài)部署Deployment”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)是一家專業(yè)提供伊州企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、做網(wǎng)站、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為伊州眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
創(chuàng)建集群時(shí),做好規(guī)劃,選擇優(yōu)化好的集群配置,可以大大減少后期運(yùn)維工作,其中部分集群的配置在建立后再也沒法修改或者修改極其麻煩。
網(wǎng)絡(luò)規(guī)劃:
網(wǎng)絡(luò)類型: Flannel、Terway
Terway 是阿里云容器服務(wù)自研的網(wǎng)絡(luò)插件,功能上完全兼容 Flannel,如果保守,還是使用 Flannel
Pod 網(wǎng)絡(luò) CIDR
默認(rèn) 16 的大網(wǎng)段,有效的網(wǎng)段或者其子網(wǎng) 10.0.0.0/8,172.16-31.0.0/12-16,192.168.0.0/16
Service CIDR
默認(rèn) 20 的網(wǎng)段,可選:10.0.0.0/16-24,172.16-31.0.0/16-24,192.168.0.0/16-24
網(wǎng)段不能沖突重復(fù),建立后沒法修改;
多個(gè)區(qū)域的多個(gè)交換機(jī)。
公網(wǎng)訪問 ApiServer
對(duì)于線上等安全要求高的集群,可以選擇不暴露 apiserver, 只有私網(wǎng) SLB, 但是這樣沒法使用云效發(fā)布;
日常預(yù)發(fā)等集群,可以暴露公網(wǎng) SLB 到 apiserver, 集群建立后立即為 slb 建立訪問控制,限制 slb 只能云效訪問;
注: K8s 每次安全漏洞幾乎都與 ApiServer 有關(guān),對(duì)于線上 K8s 集群,要及時(shí)升級(jí)補(bǔ)丁,或者不開放公網(wǎng) apiserver,使用嚴(yán)格的安全組和訪問控制。
安全組
設(shè)置安全組限定訪問范圍,為 master 與 worker 機(jī)器使用。
Master 機(jī)器規(guī)劃
為了高可用,一般使用 3 節(jié)點(diǎn), Master 選擇規(guī)則如下:
節(jié)點(diǎn)數(shù) | master 規(guī)格 |
---|---|
1-5個(gè) | 4C8G |
6-20個(gè)節(jié)點(diǎn) | 4C16G |
21-100個(gè)節(jié)點(diǎn) | 8C32G |
100-200個(gè)節(jié)點(diǎn) | 16C64G |
master 機(jī)器的存儲(chǔ)建議高性能的 50-100G SSD,因?yàn)闀?huì)運(yùn)行 ETCD,操作系統(tǒng)占用不超過 8G。
Worker 機(jī)器規(guī)劃
32C64G ECS
存儲(chǔ)。系統(tǒng)盤:100G SSD, 數(shù)據(jù)盤:400G 高效云盤
操作系統(tǒng):centos 7.4 64 位
阿里云首推神龍機(jī)器,沒有神龍機(jī)器的區(qū)域,選用高配 ECS,配置規(guī)格根據(jù)部署的 POD 規(guī)格乘以一定倍數(shù),比如 Java 應(yīng)用 pod 一般選擇 4C8G,ECS 則購(gòu)買 32C64G 或者 64C128G 為好,設(shè)置部署的時(shí)候?yàn)?pod 設(shè)置固定的 request/limit;
我們選用的機(jī)器配置:
建立集群時(shí)設(shè)置:
通過控制臺(tái)建立集群,阿里云容器服務(wù)提供的非常簡(jiǎn)易的一鍵部署集群功能,通過向?qū)瓿?K8S 集群的建立;
按照以上規(guī)劃設(shè)置 master,worker 節(jié)點(diǎn),掛載 /var/lib/docker 到數(shù)據(jù)盤;
設(shè)置合理的 Pod 網(wǎng)絡(luò) CIDR, Service CIDR ip 網(wǎng)段;
設(shè)置合理的安全策略,是否暴露 apiserver(需要直接云效發(fā)布的,需要開放公網(wǎng)暴露,并做嚴(yán)格的訪問控制);
ingress 選擇安全,可以使用內(nèi)網(wǎng),如果需要公網(wǎng),可以在控制臺(tái)很方便建立,同時(shí)做好訪問控制;
kube-proxy 模式,因?yàn)?iptables 模式在更新一條規(guī)則時(shí)把 iptables 鎖住引發(fā)的性能問題,建議使用 IPVS 模式;
節(jié)點(diǎn) POD 數(shù)量,默認(rèn) 128 太大,一個(gè)節(jié)點(diǎn)不可能部署這么多,建議改為 64;
節(jié)點(diǎn)服務(wù)端口訪問 (NodePort,SLB),可以適當(dāng)擴(kuò)大,默認(rèn)的也一般足夠用。
集群配置修改:
集群擴(kuò)容,添加已有節(jié)點(diǎn)(節(jié)點(diǎn)配置參考上文,掛載數(shù)據(jù)盤使用 /var/lib/docker)
Master 機(jī)器升配:
worker 節(jié)點(diǎn)變配或者移除:
kubectl drain --ignore-daemonsets {node.name}
kubectl delete node {node.name}
ECS 升配變配
添加已有節(jié)點(diǎn)到集群
命名空間:
按照應(yīng)用分組建立 namespace,對(duì)于資源占用厲害需要限制的應(yīng)用分組,設(shè)置該 NameSpace 的資源配額與限制;
授權(quán):
子賬號(hào)如何給其他子賬號(hào)進(jìn)行 RBAC 授權(quán)
通過堡壘機(jī)按應(yīng)用人員設(shè)置權(quán)限
使用無(wú)狀態(tài)部署 Deployment,實(shí)現(xiàn)分批發(fā)布。
優(yōu)化設(shè)置模板:
apiVersion: apps/v1beta2 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: '34'# 標(biāo)簽,映射 service labels: app: {app_name}-aone name: {app_name}-aone-1 namespace: {app_name} spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: {app_name}-aone# 批量重啟更新策略 strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: {app_name}-aone spec: containers: # 環(huán)境變量增加時(shí)區(qū) - env: - name: TZ value: Asia/Shanghai - image: >- registry-vpc.cn-north-2-gov-1.aliyuncs.com/{namespace}/{app_name}:20190820190005 imagePullPolicy: Always # 啟動(dòng)前執(zhí)行優(yōu)雅下線摘除 服務(wù)注冊(cè) lifecycle: preStop: exec: command: - sudo - '-u' - admin - /home/{user_name}/{app_name}/bin/appctl.sh - {app_name} - stop # 存活檢查,強(qiáng)烈建議設(shè)置 livenessProbe: failureThreshold: 10 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 tcpSocket: port: 5900 timeoutSeconds: 1 name: {app_name}-aone # 就緒檢查,強(qiáng)烈建議設(shè)置 readinessProbe: failureThreshold: 10 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 tcpSocket: port: 5900 timeoutSeconds: 1 # 資源限制,這個(gè)一定要合理設(shè)置 resources: limits: cpu: '4' memory: 8Gi requests: cpu: '4' memory: 8Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File # 日志存放目錄,映射到節(jié)點(diǎn)的/var/lib/docker/logs 數(shù)據(jù)盤,應(yīng)用日志目錄設(shè)置到/home/{user_name}/logs 下 volumeMounts: - mountPath: /home/{user_name}/logs name: volume-1553755418538 DNSPolicy: ClusterFirst ## 私有鏡像倉(cāng)庫(kù)的密鑰,從保密字段獲取 imagePullSecrets: - name: {app_name}-987 restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 # 日志存放目錄,映射到節(jié)點(diǎn)的/var/lib/docker/logs 數(shù)據(jù)盤 volumes: - hostPath: path: /var/lib/docker/logs/{app_name} type: '' name: volume-1553755418538
因?yàn)槿萜鞣?wù)的 Cloud Controller Manager 會(huì)同步刪除 service 建立關(guān)聯(lián)的 SLB,為了防止 service 配置修改誤刪除 slb 故障,并導(dǎo)致域名、安全等配置需要修改的坑,強(qiáng)烈建議 service 與 slb 解耦,service 采用 NodePort 的方式,slb 另外建立后端服務(wù)器指向集群節(jié)點(diǎn),如果需要透?jìng)髡鎸?shí) IP,并考慮負(fù)載均衡,需要遵守一定的配置規(guī)則和方法,參考 這個(gè)文章。
NodePort:
apiVersion: v1 kind: Servicemetadata: name: {app_name} namespace: {namespaces}spec: clusterIP: 10.1.50.65## 策略關(guān)系到是否透?jìng)髡鎸?shí) IP externalTrafficPolicy: Cluster ports: - name: {app_name}-80-7001 nodePort: 32653 port: 80 protocol: TCP targetPort: 7001 - name: {app_name}-5908-5908 nodePort: 30835 port: 5108 protocol: TCP targetPort: 5108 selector: app: {app_name} sessionAffinity: None type: NodePortstatus: loadBalancer: {}
然后在負(fù)載均衡管理頁(yè)面,選擇后端服務(wù)器指向集群的 worker 機(jī)器,設(shè)置端口為以上服務(wù)的端口:32653,完成配置,這樣在集群 service 修改或者刪除重建的時(shí)候,slb 不會(huì)被集群的 CCM 刪除,不會(huì)涉及到域名,安全等配置修改。同時(shí),可以設(shè)置一些策略,需要升級(jí)修改服務(wù)配置時(shí),分批切流等。
“怎么使用無(wú)狀態(tài)部署Deployment”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
網(wǎng)頁(yè)標(biāo)題:怎么使用無(wú)狀態(tài)部署Deployment
分享URL:http://muchs.cn/article12/jpgidc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、商城網(wǎng)站、微信小程序、靜態(tài)網(wǎng)站、網(wǎng)站營(yíng)銷、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)