久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么使用無狀態部署Deployment

175次閱讀
沒有評論

共計 4291 個字符,預計需要花費 11 分鐘才能閱讀完成。

本篇內容介紹了“怎么使用無狀態部署 Deployment”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創建集群

創建集群時,做好規劃,選擇優化好的集群配置,可以大大減少后期運維工作,其中部分集群的配置在建立后再也沒法修改或者修改極其麻煩。

集群規劃

網絡規劃:

網絡類型: Flannel、Terway

            Terway 是阿里云容器服務自研的網絡插件,功能上完全兼容 Flannel,如果保守,還是使用 Flannel 

Pod 網絡 CIDR

默認 16 的大網段,有效的網段或者其子網 10.0.0.0/8,172.16-31.0.0/12-16,192.168.0.0/16

Service CIDR

默認 20 的網段,可選:10.0.0.0/16-24,172.16-31.0.0/16-24,192.168.0.0/16-24

網段不能沖突重復,建立后沒法修改;

多個區域的多個交換機。

公網訪問 ApiServer

對于線上等安全要求高的集群,可以選擇不暴露 apiserver, 只有私網 SLB, 但是這樣沒法使用云效發布;

日常預發等集群,可以暴露公網 SLB 到 apiserver, 集群建立后立即為 slb 建立訪問控制,限制 slb 只能云效訪問;

注:K8s 每次安全漏洞幾乎都與 ApiServer 有關,對于線上 K8s 集群,要及時升級補丁,或者不開放公網 apiserver, 使用嚴格的安全組和訪問控制。

安全組

設置安全組限定訪問范圍,為 master 與 worker 機器使用。

Master 機器規劃

    為了高可用,一般使用 3 節點,
Master 選擇規則如下:

節點數  master 規格 1 - 5 個 4C8G6-20 個節點 4C16G21-100 個節點 8C32G100-200 個節點 16C64G

master 機器的存儲建議高性能的 50-100G SSD,因為會運行 ETCD,操作系統占用不超過 8G。

Worker 機器規劃

32C64G ECS

存儲。系統盤:100G SSD,  數據盤:400G 高效云盤

操作系統:centos 7.4 64 位

阿里云首推神龍機器,沒有神龍機器的區域,選用高配 ECS,配置規格根據部署的 POD 規格乘以一定倍數,比如 Java 應用 pod 一般選擇 4C8G,ECS 則購買 32C64G 或者 64C128G 為好,設置部署的時候為 pod 設置固定的 request/limit;

我們選用的機器配置:

集群建立與配置

建立集群時設置:

通過控制臺建立集群,阿里云容器服務提供的非常簡易的一鍵部署集群功能,通過向導完成 K8S 集群的建立;

按照以上規劃設置 master,worker 節點,掛載 /var/lib/docker 到數據盤;

設置合理的 Pod 網絡 CIDR, Service CIDR ip 網段;

設置合理的安全策略,是否暴露 apiserver(需要直接云效發布的,需要開放公網暴露,并做嚴格的訪問控制);

ingress 選擇安全,可以使用內網,如果需要公網,可以在控制臺很方便建立,同時做好訪問控制;

kube-proxy 模式,因為 iptables 模式在更新一條規則時把 iptables 鎖住引發的性能問題,建議使用 IPVS 模式;

節點 POD 數量,默認 128 太大,一個節點不可能部署這么多,建議改為 64;

節點服務端口訪問 (NodePort,SLB),可以適當擴大,默認的也一般足夠用。

集群配置修改:

集群擴容, 添加已有節點(節點配置參考上文,掛載數據盤使用 /var/lib/docker)     

Master 機器升配:

worker 節點變配或者移除:

kubectl drain –ignore-daemonsets {node.name}

kubectl delete node {node.name}

ECS 升配變配

添加已有節點到集群

命名空間: 

按照應用分組建立 namespace,對于資源占用厲害需要限制的應用分組,設置該 NameSpace 的資源配額與限制;

授權:

子賬號如何給其他子賬號進行 RBAC 授權

通過堡壘機按應用人員設置權限

 

部署設置

 

無狀態部署

使用無狀態部署 Deployment,實現分批發布。
優化設置模板: 

apiVersion: apps/v1beta2
kind: Deployment
metadata:
 annotations:
 deployment.kubernetes.io/revision:  34 #  標簽,映射  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: #  環境變量增加時區
 - env:
 - name: TZ
 value: Asia/Shanghai
 - image:  -
 registry-vpc.cn-north-2-gov-1.aliyuncs.com/{namespace}/{app_name}:20190820190005
 imagePullPolicy: Always #  啟動前執行優雅下線摘除   服務注冊
 lifecycle:
 preStop: exec: command:
 - sudo
 -  -u 
 - admin
 - /home/{user_name}/{app_name}/bin/appctl.sh
 - {app_name}
 - stop #  存活檢查,強烈建議設置  
 livenessProbe:
 failureThreshold: 10
 initialDelaySeconds: 30
 periodSeconds: 10
 successThreshold: 1
 tcpSocket:
 port: 5900
 timeoutSeconds: 1
 name: {app_name}-aone #  就緒檢查,強烈建議設置
 readinessProbe:
 failureThreshold: 10
 initialDelaySeconds: 30
 periodSeconds: 10
 successThreshold: 1
 tcpSocket:
 port: 5900
 timeoutSeconds: 1 #  資源限制,這個一定要合理設置  
 resources:
 limits:
 cpu:  4 
 memory: 8Gi
 requests:
 cpu:  4 
 memory: 8Gi
 terminationMessagePath: /dev/termination-log
 terminationMessagePolicy: File #  日志存放目錄,映射到節點的 /var/lib/docker/logs  數據盤,應用日志目錄設置到 /home/{user_name}/logs  下
 volumeMounts:
 - mountPath: /home/{user_name}/logs
 name: volume-1553755418538
 dnsPolicy: ClusterFirst ##  私有鏡像倉庫的密鑰,從保密字段獲取
 imagePullSecrets:
 - name: {app_name}-987
 restartPolicy: Always
 schedulerName: default-scheduler
 securityContext: {}
 terminationGracePeriodSeconds: 30 #  日志存放目錄,映射到節點的 /var/lib/docker/logs  數據盤
 volumes:
 - hostPath:
 path: /var/lib/docker/logs/{app_name} type:  
 name: volume-1553755418538

 

服務設置

因為容器服務的 Cloud Controller Manager 會同步刪除 service 建立關聯的 SLB,為了防止 service 配置修改誤刪除 slb 故障,并導致域名、安全等配置需要修改的坑,強烈建議 service 與 slb 解耦,service 采用 NodePort 的方式,slb 另外建立后端服務器指向集群節點,如果需要透傳真實 IP,并考慮負載均衡,需要遵守一定的配置規則和方法,參考
這個文章。

NodePort:

apiVersion: v1
kind: Servicemetadata:
 name: {app_name}
 namespace: {namespaces}spec:
 clusterIP: 10.1.50.65##  策略關系到是否透傳真實  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: {}

然后在負載均衡管理頁面,選擇后端服務器指向集群的 worker 機器,設置端口為以上服務的端口:32653,完成配置,這樣在集群 service 修改或者刪除重建的時候,slb 不會被集群的 CCM 刪除,不會涉及到域名,安全等配置修改。同時,可以設置一些策略,需要升級修改服務配置時,分批切流等。

“怎么使用無狀態部署 Deployment”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計4291字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 屯留县| 长乐市| 鄱阳县| 清远市| 宣城市| 马龙县| 凤庆县| 海兴县| 六安市| 沿河| 全南县| 庆安县| 静宁县| 灌云县| 吴旗县| 手机| 新田县| 揭阳市| 炉霍县| 昌黎县| 天台县| 娱乐| 青冈县| 柳州市| 安陆市| 栾川县| 富阳市| 南乐县| 大连市| 丰宁| 鸡泽县| 浙江省| 黄浦区| 永嘉县| 湖南省| 新竹县| 宁陵县| 二连浩特市| 花莲市| 台湾省| 东阳市|