




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
容器編排規(guī)程一、容器編排概述
容器編排是指對(duì)大規(guī)模容器化應(yīng)用進(jìn)行自動(dòng)化部署、擴(kuò)展、管理和運(yùn)維的過(guò)程。通過(guò)容器編排工具,可以實(shí)現(xiàn)容器的高效利用、資源優(yōu)化和業(yè)務(wù)連續(xù)性保障。本規(guī)程旨在提供一套標(biāo)準(zhǔn)化的容器編排操作指南,確保容器化應(yīng)用在不同環(huán)境中的一致性和可移植性。
(一)容器編排的重要性
1.資源利用率提升:通過(guò)自動(dòng)化的資源調(diào)度和負(fù)載均衡,容器編排可顯著提高計(jì)算資源利用率。
2.應(yīng)用部署效率:實(shí)現(xiàn)一鍵式應(yīng)用部署和快速擴(kuò)展,縮短業(yè)務(wù)上線周期。
3.運(yùn)維一致性:標(biāo)準(zhǔn)化操作流程,降低人為錯(cuò)誤風(fēng)險(xiǎn),提高運(yùn)維效率。
4.彈性伸縮能力:根據(jù)業(yè)務(wù)需求自動(dòng)調(diào)整資源,確保應(yīng)用高可用性。
(二)主流容器編排工具
1.Kubernetes(K8s):目前最流行的容器編排平臺(tái),具備強(qiáng)大的社區(qū)支持和豐富的生態(tài)。
2.DockerSwarm:Docker官方推出的分布式容器編排方案,易于集成和使用。
3.ApacheMesos:通用的資源調(diào)度框架,支持多種工作負(fù)載類型。
4.Nomad:HashiCorp開發(fā)的高效工作負(fù)載調(diào)度器,簡(jiǎn)單易用。
二、容器編排實(shí)施規(guī)程
(一)環(huán)境準(zhǔn)備
1.硬件要求:
-主機(jī)數(shù)量:建議≥3臺(tái),實(shí)現(xiàn)高可用部署
-CPU核心數(shù):≥8核,根據(jù)業(yè)務(wù)規(guī)模調(diào)整
-內(nèi)存容量:≥16GB,每容器建議分配≥1GB內(nèi)存
-網(wǎng)絡(luò)帶寬:≥1Gbps,確保容器間通信效率
2.軟件要求:
-操作系統(tǒng):CentOS7.x/Ubuntu18.04+
-編程語(yǔ)言:Python3.6+
-必要工具:Docker-ce19.x+,Git,kubectl/helm
(二)集群搭建
1.單節(jié)點(diǎn)集群部署(測(cè)試環(huán)境):
-安裝Docker:`yuminstall-yyum-utils&&yum-config-manager--add-repo/linux/centos/docker-ce.repo&&yuminstalldocker-ce-y`
-初始化Kubernetes:`kubeadminit--pod-network-cidr=/16`
2.多節(jié)點(diǎn)集群部署(生產(chǎn)環(huán)境):
-首節(jié)點(diǎn)初始化:執(zhí)行上述單節(jié)點(diǎn)命令
-加入工作節(jié)點(diǎn):`kubeadmjoin<master-ip>:6443--token<token>--discovery-token-ca-cert-hashsha256:<hash>`
-安裝網(wǎng)絡(luò)插件:`kubectlapply-f/coreos/flannel/master/Documentation/kube-flannel.yml`
(三)應(yīng)用編排實(shí)踐
1.應(yīng)用打包規(guī)范:
-Dockerfile編寫:
```
FROMnginx:1.17
COPY./html/usr/share/nginx/html
EXPOSE80
CMD["nginx","-g","daemonoff;"]
```
-構(gòu)建鏡像:`dockerbuild-tmy-app:1.0.`
-標(biāo)簽鏡像:`dockertagmy-app:1.0/my-app:1.0`
2.Kubernetes部署配置:
-Deployment文件:
```yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:my-app
spec:
replicas:3
selector:
matchLabels:
app:my-app
template:
metadata:
labels:
app:my-app
spec:
containers:
-name:my-app
image:/my-app:1.0
ports:
-containerPort:80
resources:
requests:
memory:"256Mi"
cpu:"250m"
limits:
memory:"512Mi"
cpu:"500m"
```
-Service配置:
```yaml
apiVersion:v1
kind:Service
metadata:
name:my-app-service
spec:
selector:
app:my-app
ports:
-protocol:TCP
port:80
targetPort:80
type:LoadBalancer
```
3.應(yīng)用部署步驟:
(1)應(yīng)用Deployment文件:`kubectlapply-fdeployment.yaml`
(2)檢查Pod狀態(tài):`kubectlgetpods-owide`
(3)獲取服務(wù)地址:`kubectlgetsvc-owide`
(4)驗(yàn)證應(yīng)用:通過(guò)外部IP訪問(wèn)服務(wù)
(四)高級(jí)編排技術(shù)
1.滾動(dòng)更新策略:
-設(shè)置更新參數(shù):`kubectlsetimagedeployment/my-appmy-app=/my-app:1.1`
-控制更新速度:`kubectlrolloutstatusdeployment/my-app`
2.副本數(shù)管理:
-擴(kuò)容操作:`kubectlscaledeployment/my-app--replicas=5`
-縮容操作:`kubectlscaledeployment/my-app--replicas=2`
3.自我修復(fù)機(jī)制:
-Pod重啟策略:`kubectlpatchdeployment/my-app-p'{"spec/template/spec/strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":2,"maxSurge":2}}}'`
(五)監(jiān)控與維護(hù)
1.監(jiān)控方案:
-Prometheus集成:
```yaml
apiVersion:/v1
kind:ServiceMonitor
metadata:
name:my-app-monitor
spec:
selector:
matchLabels:
app:my-app
namespace:default
endpoints:
-port:web
interval:30s
```
-Grafana配置:
-添加Prometheus數(shù)據(jù)源
-創(chuàng)建儀表盤展示:
-Pod狀態(tài)監(jiān)控
-資源利用率統(tǒng)計(jì)
-應(yīng)用訪問(wèn)日志
2.備份與恢復(fù):
-鏡像備份:定期執(zhí)行`dockersavemy-app:1.0>my-app_backup.tar`
-狀態(tài)備份:使用etcd工具導(dǎo)出集群配置
-恢復(fù)流程:
(1)刪除現(xiàn)有集群:`kubeadmreset--all`
(2)重新初始化:執(zhí)行`kubeadminit`
(3)恢復(fù)鏡像:`dockerload<my-app_backup.tar`
(4)重建應(yīng)用:執(zhí)行`kubectlapply-fyaml`文件
三、最佳實(shí)踐
(一)資源配額管理
1.設(shè)置Namespace配額:
```bash
kubectlcreatenamespacedev
kubectlcreateresourcequota--namespacedev\
--hard="requests.cpu=500m,requests.memory=1Gi,limits.cpu=1000m,limits.memory=2Gi"
```
2.使用LimitRange限制資源申請(qǐng):
```yaml
apiVersion:v1
kind:LimitRange
metadata:
name:default-limit-range
spec:
types:
-Container
min:
cpu:
request:
minimum:250m
memory:
request:
minimum:256Mi
max:
cpu:
limit:
maximum:2000m
memory:
limit:
maximum:4Gi
```
(二)安全加固措施
1.RBAC權(quán)限控制:
-創(chuàng)建服務(wù)賬號(hào):`kubectlcreateserviceaccountmy-app-sa--namespacedefault`
-綁定角色:`kubectlcreaterolebindingmy-app-binding--namespacedefault\
--rolemy-app-role--serviceaccountdefault:my-app-sa`
-角色定義:
```yaml
apiVersion:rbac.authorization.k8s.io/v1
kind:Role
metadata:
namespace:default
name:my-app-role
rules:
-apiGroups:[""]
resources:["pods"]
verbs:["get","watch","list"]
```
2.網(wǎng)絡(luò)策略配置:
```yaml
apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:my-app-network-policy
spec:
podSelector:
matchLabels:
app:my-app
policyTypes:
-Ingress
-Egress
ingress:
-from:
-podSelector:
matchLabels:
app:my-app
egress:
-to:
-podSelector:
matchLabels:
app:my-app
```
(三)日志管理方案
1.EFK日志收集架構(gòu):
-Fluentd配置:
```yaml
apiVersion:daemonset.k8s.io/v1
kind:DaemonSet
metadata:
name:fluentd
spec:
selector:
matchLabels:
name:fluentd
template:
metadata:
labels:
name:fluentd
spec:
containers:
-name:fluentd
image:fluent/fluentd:latest
ports:
-containerPort:24224
volumeMounts:
-name:varlog
mountPath:/var/log
-name:sys
mountPath:/sys
-name:containers
mountPath:/var/lib/docker/containers
-name:images
mountPath:/var/lib/docker/images
env:
-name:FLUENTD_CONFIG
value:/etc/fluentd/config.d/fluentd.conf
volumes:
-name:varlog
hostPath:
path:/var/log
-name:sys
hostPath:
path:/sys
-name:containers
hostPath:
path:/var/lib/docker/containers
-name:images
hostPath:
path:/var/lib/docker/images
```
-Elasticsearch配置:
```yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:elasticsearch
spec:
replicas:3
selector:
matchLabels:
app:elasticsearch
template:
metadata:
labels:
app:elasticsearch
spec:
containers:
-name:elasticsearch
image:docker.elastic.co/elasticsearch/elasticsearch:7.10.1
resources:
limits:
memory:2g
ports:
-containerPort:9200
-containerPort:9300
environment:
-name:discovery.type
value:"single-node"
```
-Kibana配置:
```yaml
apiVersion:v1
kind:ConfigMap
metadata:
name:kibana
data:
kibana.yml:|
server.host:"localhost"
elasticsearch.hosts:["http://elasticsearch:9200"]
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:kibana
spec:
replicas:1
selector:
matchLabels:
app:kibana
template:
metadata:
labels:
app:kibana
spec:
containers:
-name:kibana
image:docker.elastic.co/kibana/kibana:7.10.1
ports:
-containerPort:5601
env:
-name:ELASTICSEARCH_HOSTS
value:"http://elasticsearch:9200"
```
2.日志分級(jí)策略:
-Info級(jí)別:存儲(chǔ)7天
-Warning級(jí)別:存儲(chǔ)15天
-Error級(jí)別:永久存儲(chǔ)
-配置示例:
```yaml
<matchlevel="info">
@typeelasticsearch
host=>"http://elasticsearch:9200"
tags=>["info"]
index=>"%{+yyyy.MM.dd}"
</match>
<matchlevel="warning">
@typeelasticsearch
host=>"http://elasticsearch:9200"
tags=>["warning"]
index=>"%{+yyyy.MM.dd}"
</match>
<matchlevel="error">
@typeelasticsearch
host=>"http://elasticsearch:9200"
tags=>["error"]
index=>"error-%{+yyyy.MM.dd}"
</match>
```
四、常見(jiàn)問(wèn)題排查
(一)部署失敗排查
1.日志檢查:
-Pod日志:`kubectllogs<pod-name>-c<container-name>`
-控制臺(tái)日志:`kubectldescribepod<pod-name>`
2.常見(jiàn)錯(cuò)誤處理:
-DNS問(wèn)題:`kubectlexec-it<pod-name>--nslookupkubernetes`
-網(wǎng)絡(luò)問(wèn)題:`kubectlexec-it<pod-name>--ping<service-name>`
-資源不足:`kubectldescribenodes|grep-i"Allocatedresources"`
-鏡像拉取失?。簷z查鏡像倉(cāng)庫(kù)訪問(wèn)權(quán)限和鏡像名稱
(二)性能優(yōu)化技巧
1.資源調(diào)整:
-查看容器CPU使用率:`kubectltoppod<pod-name>-n<namespace>`
-擴(kuò)大資源配額:`kubectleditdeployment<deployment-name>`
2.緩存優(yōu)化:
-Docker構(gòu)建緩存:使用`--cache-from`參數(shù)
-Kubernetes鏡像緩存:配置ImagePullSecrets
3.網(wǎng)絡(luò)優(yōu)化:
-使用IPVS調(diào)度器:`kubectlpatchnode<node-name>-p'{"spec:":"schedulerName:ipvs-scheduler"}'`
-配置節(jié)點(diǎn)親和性:減少網(wǎng)絡(luò)抖動(dòng)
(三)故障切換方案
1.主備切換流程:
(1)停止主節(jié)點(diǎn)所有Pod:`kubectldeletepods-lapp=my-app-ndefault`
(2)刪除舊Service:`kubectldeleteservicemy-app-service-ndefault`
(3)創(chuàng)建新Service:`kubectlapply-fservice.yaml`
(4)等待Pod自動(dòng)重建:`kubectlgetpods-ndefault-w`
2.自動(dòng)故障檢測(cè):
-設(shè)置健康檢查:`kubectleditdeployment/my-app`
```yaml
spec:
templates:
-spec:
containers:
-name:my-app
livenessProbe:
httpGet:
path:/health
port:80
initialDelaySeconds:60
periodSeconds:10
readinessProbe:
httpGet:
path:/ready
port:80
initialDelaySeconds:30
periodSeconds:10
```
五、版本管理
(一)變更控制流程
1.需求評(píng)估:
-提交變更請(qǐng)求(CR)
-技術(shù)可行性分析
-風(fēng)險(xiǎn)評(píng)估
2.開發(fā)規(guī)范:
-Git分支策略:
```
main
├──develop
└──feature/<feature-name>
├──develop
└──master
```
-代碼審查:要求每個(gè)PR至少2人審查
-單元測(cè)試覆蓋率≥80%
(二)發(fā)布管理
1.發(fā)布流程:
-開發(fā)環(huán)境部署:`kubectlapply-fdev/deployment.yaml`
-測(cè)試環(huán)境部署:`kubectlapply-ftest/deployment.yaml`
-預(yù)發(fā)環(huán)境部署:`kubectlapply-fstaging/deployment.yaml`
-生產(chǎn)環(huán)境部署:`kubectlapply-fprod/deployment.yaml`
2.回滾機(jī)制:
-快速回滾:`kubectlrolloutundodeployment/my-app`
-全量回滾:手動(dòng)重建舊版本鏡像
-自動(dòng)回滾:配置RolloutStrategy為OnFailure
(三)版本追蹤
1.版本命名規(guī)范:
-SemVer格式:`MAJOR.MINOR.PATCH`
-示例:`1.2.3`
2.版本記錄:
-Git標(biāo)簽:`gittag-av1.2.3-m"Releasev1.2.3"`
-發(fā)布記錄文檔:記錄每個(gè)版本變更和已知問(wèn)題
---
三、最佳實(shí)踐
(一)資源配額管理
對(duì)集群資源進(jìn)行合理分配和管理是確保公平使用、防止資源濫用和提高整體效率的關(guān)鍵。通過(guò)設(shè)置資源配額(ResourceQuota)和限制范圍(LimitRange),可以控制不同命名空間(Namespace)下的工作負(fù)載對(duì)集群資源的消耗。
1.設(shè)置Namespace配額:為特定命名空間定義資源使用的上限。當(dāng)命名空間中的工作負(fù)載請(qǐng)求的資源超過(guò)配額時(shí),新的資源請(qǐng)求將被拒絕。
```bash
創(chuàng)建一個(gè)新的命名空間用于開發(fā)環(huán)境
kubectlcreatenamespacedev
為"dev"命名空間創(chuàng)建資源配額,限制CPU和內(nèi)存的使用
kubectlcreateresourcequota--namespacedev\
--hard="requests.cpu=500m,requests.memory=1Gi,limits.cpu=1000m,limits.memory=2Gi"
驗(yàn)證配額創(chuàng)建成功
kubectlgetresourcequota-ndev
```
說(shuō)明:`requests.cpu`表示Pod請(qǐng)求的CPU核心數(shù)(500毫核),`requests.memory`表示請(qǐng)求的內(nèi)存大小(1GB)。`limits.cpu`和`limits.memory`表示允許Pod使用的最大資源量。
2.使用LimitRange限制資源申請(qǐng):為容器強(qiáng)制設(shè)置資源請(qǐng)求(requests)和限制(limits)的范圍。這可以確保容器不會(huì)請(qǐng)求過(guò)多資源,同時(shí)也為資源分配提供指導(dǎo)。
```yaml
apiVersion:v1
kind:LimitRange
metadata:
name:default-limit-range在"default"命名空間創(chuàng)建
spec:
types:
-Container限制容器資源
min:
cpu:
request:
minimum:250m容器至少請(qǐng)求250毫核CPU
memory:
request:
minimum:256Mi容器至少請(qǐng)求256Mi內(nèi)存
max:
cpu:
limit:
maximum:2000m容器最多限制使用2000毫核CPU
memory:
limit:
maximum:4Gi容器最多限制使用4Gi內(nèi)存
```
說(shuō)明:`min`字段確保容器不會(huì)過(guò)度索取資源,`max`字段防止容器占用過(guò)多資源影響其他工作負(fù)載。
(二)安全加固措施
在容器化環(huán)境中,保障應(yīng)用和集群的安全至關(guān)重要。實(shí)施適當(dāng)?shù)纳矸蒡?yàn)證、授權(quán)和網(wǎng)絡(luò)隔離措施可以顯著提高系統(tǒng)的安全性。
1.RBAC權(quán)限控制:基于角色的訪問(wèn)控制(Role-BasedAccessControl)是Kubernetes的核心安全特性之一。通過(guò)為用戶、服務(wù)賬戶和組分配特定的角色和角色綁定,可以精確控制它們對(duì)集群資源的操作權(quán)限。
創(chuàng)建服務(wù)賬戶:服務(wù)賬戶是Kubernetes中用于非人類用戶的身份,常用于工作負(fù)載(如Pod)。
```bash
kubectlcreateserviceaccountmy-app-sa--namespacedefault
查看創(chuàng)建的服務(wù)賬戶
kubectlgetserviceaccountmy-app-sa-ndefault
```
創(chuàng)建角色:角色定義了一組權(quán)限(verbs),應(yīng)用于特定的資源(resources)。
```yaml
apiVersion:rbac.authorization.k8s.io/v1
kind:Role
metadata:
namespace:default
name:my-app-role創(chuàng)建一個(gè)名為"my-app-role"的角色
spec:
允許對(duì)Pod資源執(zhí)行g(shù)et,watch,list操作
rules:
-apiGroups:[""]""表示核心API組
resources:["pods"]
verbs:["get","watch","list"]
可以添加更多規(guī)則,例如訪問(wèn)ConfigMap等
-apiGroups:["v1"]
resources:["secrets"]
verbs:["get","create","update"]
```
綁定角色到服務(wù)賬戶:將角色權(quán)限授予特定的服務(wù)賬戶。
```bash
kubectlcreaterolebindingmy-app-binding--namespacedefault\
--rolemy-app-role--serviceaccountdefault:my-app-sa
或者使用kubectledit命令修改服務(wù)賬戶權(quán)限
kubectleditserviceaccountmy-app-sa-ndefault
添加以下內(nèi)容到"volumeMounts"或"imagePullSecrets"部分(根據(jù)實(shí)際情況)
spec:
imagePullSecrets:
-name:my-app-registry-key如果需要鏡像拉取權(quán)限
volumeMounts:
-name:my-storage-pvc如果需要訪問(wèn)PVC權(quán)限
mountPath:"/path/in/pod"
subPath:""根據(jù)需要調(diào)整
```
說(shuō)明:創(chuàng)建的角色僅允許服務(wù)賬戶對(duì)默認(rèn)命名空間下的Pod進(jìn)行基本操作,實(shí)際應(yīng)用中需要根據(jù)需求調(diào)整權(quán)限范圍。
2.網(wǎng)絡(luò)策略配置:網(wǎng)絡(luò)策略(NetworkPolicy)允許您定義Pod之間的網(wǎng)絡(luò)訪問(wèn)規(guī)則,實(shí)現(xiàn)更細(xì)粒度的網(wǎng)絡(luò)隔離和安全控制。
創(chuàng)建網(wǎng)絡(luò)策略:以下策略限制只有標(biāo)簽為`app=my-app`的Pod可以訪問(wèn)標(biāo)簽為`app=my-app`的Pod的80端口。
```yaml
apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:my-app-network-policy
namespace:default策略應(yīng)用于默認(rèn)命名空間
spec:
指定策略類型,Ingress表示入站流量規(guī)則,Egress表示出站流量規(guī)則
policyTypes:
-Ingress
-Egress
Pod選擇器,匹配該策略的Pod
podSelector:
matchLabels:
app:my-app
Ingress規(guī)則:定義允許訪問(wèn)當(dāng)前策略Pod的流量
ingress:
-from:指定允許訪問(wèn)的來(lái)源Pod
-podSelector:
matchLabels:
app:my-app允許同標(biāo)簽的Pod訪問(wèn)
Egress規(guī)則:定義當(dāng)前策略Pod可以訪問(wèn)的流量目標(biāo)
egress:
-to:指定允許訪問(wèn)的目標(biāo)Pod
-podSelector:
matchLabels:
app:my-app允許同標(biāo)簽的Pod被訪問(wèn)
可以添加更多復(fù)雜的規(guī)則,例如:
-from:
-ipBlock:
cidr:/24允許特定IP段訪問(wèn)
ports:
-protocol:TCP
port:80僅允許訪問(wèn)80端口
targetPort:80
```
說(shuō)明:此策略創(chuàng)建了一個(gè)"安全區(qū)域",只有標(biāo)記為`app=my-app`的Pod之間可以互相通信(入站和出站都受限于此規(guī)則)。這有助于防止跨應(yīng)用的安全漏洞。
(三)日志管理方案
容器日志是故障排查、性能分析和安全審計(jì)的重要依據(jù)。建立一個(gè)集中、高效且可管理的日志收集系統(tǒng)對(duì)于運(yùn)維團(tuán)隊(duì)至關(guān)重要。
1.EFK日志收集架構(gòu):這是一個(gè)廣泛使用的開源日志解決方案,由Elasticsearch、Fluentd和Kibana三個(gè)組件組成。
Fluentd配置:Fluentd作為日志收集器,負(fù)責(zé)從各個(gè)容器收集日志并轉(zhuǎn)發(fā)到Elasticsearch。
```yaml
apiVersion:daemonset.k8s.io/v1
kind:DaemonSet
metadata:
name:fluentd
namespace:logging通常將日志組件放在單獨(dú)的命名空間
spec:
selector:
matchLabels:
name:fluentd
template:
metadata:
labels:
name:fluentd
spec:
containers:
-name:fluentd
image:fluent/fluentd:latest使用官方鏡像
ports:
-containerPort:24224FluentdHTTPAPI端口
volumeMounts:
掛載Pod日志目錄、系統(tǒng)信息等
-name:varlog
mountPath:/var/log
-name:sys
mountPath:/sys
-name:containers
mountPath:/var/lib/docker/containers
-name:images
mountPath:/var/lib/docker/images
env:
配置Fluentd的日志輸出路徑
-name:FLUENTD_CONFIG
value:/etc/fluentd/config.d/fluentd.conf
掛載配置文件
volumes:
-name:varlog
hostPath:
path:/var/log掛載宿主機(jī)的/var/log目錄
-name:sys
hostPath:
path:/sys
-name:containers
hostPath:
path:/var/lib/docker/containers掛載容器日志
-name:images
hostPath:
path:/var/lib/docker/images掛載鏡像日志
-name:fluentd-conf
hostPath:
path:/etc/fluentd/config.d掛載Fluentd配置文件目錄
```
Fluentd配置文件示例(`/etc/fluentd/config.d/fluentd.conf`):
```conf
<source>
@typetail
path/var/log/containers/.log
pos_file/var/log/containers/pos
tagkubernetes.log
formatjson
<parse>
@typejson
</parse>
</source>
<source>
@typetail
path/var/log/pods/.log
pos_file/var/log/pods/pos
tagkubernetes.podlog
formatjson
<parse>
@typejson
</parse>
</source>
<filterkubernetes.log>
@typerecord_transformer
enable_ruby
<record>
@version2
host=>"%{host}"
source=>"%{source}"
container_id=>"%{container_id}"
image=>"%{image}"
message=>"%{message}"
level=>"%{level}"
time=>"%{time}"
kubernetes=>"true"
</record>
</filter>
<matchkubernetes.log>
@typeelasticsearch
host=>"elasticsearch:9200"
設(shè)置索引名稱格式,包含時(shí)間戳
index=>"fluentd-%{+YYYY.MM.dd}"
設(shè)置索引模板
tags=>["kubernetes.log"]
</match>
```
Elasticsearch配置:存儲(chǔ)收集到的日志數(shù)據(jù)。
```yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:elasticsearch
namespace:logging
spec:
replicas:3高可用部署需要多個(gè)副本
selector:
matchLabels:
app:elasticsearch
template:
metadata:
labels:
app:elasticsearch
spec:
containers:
-name:elasticsearch
image:docker.elastic.co/elasticsearch/elasticsearch:7.10.1使用官方鏡像
resources:
limits:
memory:2g分配足夠的內(nèi)存
ports:
-containerPort:9200ElasticsearchHTTPAPI端口
-containerPort:9300Elasticsearch內(nèi)部通信端口
environment:
-name:discovery.type
value:"single-node"單節(jié)點(diǎn)部署時(shí)使用,集群部署時(shí)需要修改
掛載存儲(chǔ)卷以持久化數(shù)據(jù)
volumeMounts:
-name:elasticsearch-data
mountPath:/usr/share/elasticsearch/data
volumes:
-name:elasticsearch-data
persistentVolumeClaim:
claimName:elasticsearch-pvc需要預(yù)先創(chuàng)建PVC
```
注意:實(shí)際生產(chǎn)環(huán)境中需要配置Elasticsearch集群模式(peerdiscovery、master選舉等),并使用持久化存儲(chǔ)(PVC)。
Kibana配置:提供用戶界面用于搜索、可視化和分析日志數(shù)據(jù)。
```yaml
apiVersion:v1
kind:ConfigMap
metadata:
name:kibana
namespace:logging
data:
kibana.yml:|
server.host:"localhost"在集群內(nèi)部訪問(wèn)時(shí)使用
在Kubernetes中通常設(shè)置為""或特定服務(wù)名
server.host:""
elasticsearch.hosts:["http://elasticsearch:9200"]
設(shè)置Kibana索引模式
elasticsearch.index_patterns:["fluentd-"]
設(shè)置默認(rèn)的Kibana空間
kibana.index_names:["fluentd-"]
設(shè)置默認(rèn)可視化面板
kibana.default可視化和儀表盤配置...
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:kibana
namespace:logging
spec:
replicas:1
selector:
matchLabels:
app:kibana
template:
metadata:
labels:
app:kibana
spec:
containers:
-name:kibana
image:docker.elastic.co/kibana/kibana:7.10.1使用官方鏡像
ports:
-containerPort:5601KibanaWeb端口
env:
-name:ELASTICSEARCH_HOSTS
value:"http://elasticsearch:9200"
掛載配置文件
volumeMounts:
-name:kibana-conf
mountPath:/usr/share/kibana/config
subPath:kibana.yml
volumes:
-name:kibana-conf
hostPath:
path:/etc/kibana/kibana.yml宿主機(jī)上的配置文件
```
說(shuō)明:此方案將Pod日志、容器日志等收集到Fluentd,再轉(zhuǎn)發(fā)到Elasticsearch進(jìn)行存儲(chǔ),最終通過(guò)Kibana提供可視化界面。
2.日志分級(jí)策略:根據(jù)日志的重要性和用途,對(duì)日志進(jìn)行分類存儲(chǔ)和管理,可以優(yōu)化存儲(chǔ)成本和提高查詢效率。
設(shè)置不同級(jí)別的日志存儲(chǔ)周期:可以使用Elasticsearch的索引生命周期管理(ILM)或Fluentd的過(guò)濾器規(guī)則來(lái)實(shí)現(xiàn)。
示例Fluentd過(guò)濾器規(guī)則:
```conf
<filterkubernetes.log>
@typerecord_transformer
enable_ruby
<record>
level=>"%{level}"
</record>
<if"INFO">
@typeelasticsearch
host=>"elasticsearch:9200"
index=>"logs-info-%{+YYYY.MM.dd}"
@onmatchFluentd::set_time
@onmatchFluentd::set_index_name
</if>
<if"WARNING">
@typeelasticsearch
host=>"elasticsearch:9200"
index=>"logs-warning-%{+YYYY.MM.dd}"
@onmatchFluentd::set_time
@onmatchFluentd::set_index_name
</if>
<if"ERROR">
@typeelasticsearch
host=>"elasticsearch:9200"
index=>"logs-error-%{+YYYY.MM.dd}"
@onmatchFluentd::set_time
@onmatchFluentd::set_index_name
</if>
<else>
@typenull其他級(jí)別丟棄或記錄到其他地方
</else>
</filter>
```
ElasticsearchILM策略示例(需要先創(chuàng)建索引模式):
```json
PUT_index_template/logs-
{
"index_patterns":["logs-info-","logs-warning-","logs-error-"],
"settings":{
"number_of_shards":1
},
"mappings":{
"properties":{/.../}
}
}
PUT_template/logs-
{
"index_patterns":["logs-info-","logs-warning-","logs-error-"],
"template":{
"settings":{
"":"logs-ilm-policy"
}
}
}
PUT_ilm_policy/logs-ilm-policy
{
"policy":{
"description":"Logretentionpolicy",
"rules":[
{
"condition":{
"age":{"time":"30d"}
},
"action":{
"delete":{}
},
"indices":["logs-info-"]
可以為不同索引設(shè)置不同規(guī)則
"indices":["logs-warning-"]
"action":{
"hot":{
"number_of_replicas":0
}
}
},
{
"condition":{
"age":{"time":"90d"}
},
"action":{
"delete":{}
},
"indices":["logs-warning-"]
},
{
"condition":{
"age":{"time":"365d"}
},
"action":{
"delete":{}
},
"indices":["logs-error-"]
}
]
}
}
```
說(shuō)明:此策略將INFO級(jí)別日志保留30天,WARNING保留90天,ERROR保留365天,其他級(jí)別(如DEBUG)可以選擇丟棄或單獨(dú)處理。
---
一、容器編排概述
容器編排是指對(duì)大規(guī)模容器化應(yīng)用進(jìn)行自動(dòng)化部署、擴(kuò)展、管理和運(yùn)維的過(guò)程。通過(guò)容器編排工具,可以實(shí)現(xiàn)容器的高效利用、資源優(yōu)化和業(yè)務(wù)連續(xù)性保障。本規(guī)程旨在提供一套標(biāo)準(zhǔn)化的容器編排操作指南,確保容器化應(yīng)用在不同環(huán)境中的一致性和可移植性。
(一)容器編排的重要性
1.資源利用率提升:通過(guò)自動(dòng)化的資源調(diào)度和負(fù)載均衡,容器編排可顯著提高計(jì)算資源利用率。
2.應(yīng)用部署效率:實(shí)現(xiàn)一鍵式應(yīng)用部署和快速擴(kuò)展,縮短業(yè)務(wù)上線周期。
3.運(yùn)維一致性:標(biāo)準(zhǔn)化操作流程,降低人為錯(cuò)誤風(fēng)險(xiǎn),提高運(yùn)維效率。
4.彈性伸縮能力:根據(jù)業(yè)務(wù)需求自動(dòng)調(diào)整資源,確保應(yīng)用高可用性。
(二)主流容器編排工具
1.Kubernetes(K8s):目前最流行的容器編排平臺(tái),具備強(qiáng)大的社區(qū)支持和豐富的生態(tài)。
2.DockerSwarm:Docker官方推出的分布式容器編排方案,易于集成和使用。
3.ApacheMesos:通用的資源調(diào)度框架,支持多種工作負(fù)載類型。
4.Nomad:HashiCorp開發(fā)的高效工作負(fù)載調(diào)度器,簡(jiǎn)單易用。
二、容器編排實(shí)施規(guī)程
(一)環(huán)境準(zhǔn)備
1.硬件要求:
-主機(jī)數(shù)量:建議≥3臺(tái),實(shí)現(xiàn)高可用部署
-CPU核心數(shù):≥8核,根據(jù)業(yè)務(wù)規(guī)模調(diào)整
-內(nèi)存容量:≥16GB,每容器建議分配≥1GB內(nèi)存
-網(wǎng)絡(luò)帶寬:≥1Gbps,確保容器間通信效率
2.軟件要求:
-操作系統(tǒng):CentOS7.x/Ubuntu18.04+
-編程語(yǔ)言:Python3.6+
-必要工具:Docker-ce19.x+,Git,kubectl/helm
(二)集群搭建
1.單節(jié)點(diǎn)集群部署(測(cè)試環(huán)境):
-安裝Docker:`yuminstall-yyum-utils&&yum-config-manager--add-repo/linux/centos/docker-ce.repo&&yuminstalldocker-ce-y`
-初始化Kubernetes:`kubeadminit--pod-network-cidr=/16`
2.多節(jié)點(diǎn)集群部署(生產(chǎn)環(huán)境):
-首節(jié)點(diǎn)初始化:執(zhí)行上述單節(jié)點(diǎn)命令
-加入工作節(jié)點(diǎn):`kubeadmjoin<master-ip>:6443--token<token>--discovery-token-ca-cert-hashsha256:<hash>`
-安裝網(wǎng)絡(luò)插件:`kubectlapply-f/coreos/flannel/master/Documentation/kube-flannel.yml`
(三)應(yīng)用編排實(shí)踐
1.應(yīng)用打包規(guī)范:
-Dockerfile編寫:
```
FROMnginx:1.17
COPY./html/usr/share/nginx/html
EXPOSE80
CMD["nginx","-g","daemonoff;"]
```
-構(gòu)建鏡像:`dockerbuild-tmy-app:1.0.`
-標(biāo)簽鏡像:`dockertagmy-app:1.0/my-app:1.0`
2.Kubernetes部署配置:
-Deployment文件:
```yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:my-app
spec:
replicas:3
selector:
matchLabels:
app:my-app
template:
metadata:
labels:
app:my-app
spec:
containers:
-name:my-app
image:/my-app:1.0
ports:
-containerPort:80
resources:
requests:
memory:"256Mi"
cpu:"250m"
limits:
memory:"512Mi"
cpu:"500m"
```
-Service配置:
```yaml
apiVersion:v1
kind:Service
metadata:
name:my-app-service
spec:
selector:
app:my-app
ports:
-protocol:TCP
port:80
targetPort:80
type:LoadBalancer
```
3.應(yīng)用部署步驟:
(1)應(yīng)用Deployment文件:`kubectlapply-fdeployment.yaml`
(2)檢查Pod狀態(tài):`kubectlgetpods-owide`
(3)獲取服務(wù)地址:`kubectlgetsvc-owide`
(4)驗(yàn)證應(yīng)用:通過(guò)外部IP訪問(wèn)服務(wù)
(四)高級(jí)編排技術(shù)
1.滾動(dòng)更新策略:
-設(shè)置更新參數(shù):`kubectlsetimagedeployment/my-appmy-app=/my-app:1.1`
-控制更新速度:`kubectlrolloutstatusdeployment/my-app`
2.副本數(shù)管理:
-擴(kuò)容操作:`kubectlscaledeployment/my-app--replicas=5`
-縮容操作:`kubectlscaledeployment/my-app--replicas=2`
3.自我修復(fù)機(jī)制:
-Pod重啟策略:`kubectlpatchdeployment/my-app-p'{"spec/template/spec/strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":2,"maxSurge":2}}}'`
(五)監(jiān)控與維護(hù)
1.監(jiān)控方案:
-Prometheus集成:
```yaml
apiVersion:/v1
kind:ServiceMonitor
metadata:
name:my-app-monitor
spec:
selector:
matchLabels:
app:my-app
namespace:default
endpoints:
-port:web
interval:30s
```
-Grafana配置:
-添加Prometheus數(shù)據(jù)源
-創(chuàng)建儀表盤展示:
-Pod狀態(tài)監(jiān)控
-資源利用率統(tǒng)計(jì)
-應(yīng)用訪問(wèn)日志
2.備份與恢復(fù):
-鏡像備份:定期執(zhí)行`dockersavemy-app:1.0>my-app_backup.tar`
-狀態(tài)備份:使用etcd工具導(dǎo)出集群配置
-恢復(fù)流程:
(1)刪除現(xiàn)有集群:`kubeadmreset--all`
(2)重新初始化:執(zhí)行`kubeadminit`
(3)恢復(fù)鏡像:`dockerload<my-app_backup.tar`
(4)重建應(yīng)用:執(zhí)行`kubectlapply-fyaml`文件
三、最佳實(shí)踐
(一)資源配額管理
1.設(shè)置Namespace配額:
```bash
kubectlcreatenamespacedev
kubectlcreateresourcequota--namespacedev\
--hard="requests.cpu=500m,requests.memory=1Gi,limits.cpu=1000m,limits.memory=2Gi"
```
2.使用LimitRange限制資源申請(qǐng):
```yaml
apiVersion:v1
kind:LimitRange
metadata:
name:default-limit-range
spec:
types:
-Container
min:
cpu:
request:
minimum:250m
memory:
request:
minimum:256Mi
max:
cpu:
limit:
maximum:2000m
memory:
limit:
maximum:4Gi
```
(二)安全加固措施
1.RBAC權(quán)限控制:
-創(chuàng)建服務(wù)賬號(hào):`kubectlcreateserviceaccountmy-app-sa--namespacedefault`
-綁定角色:`kubectlcreaterolebindingmy-app-binding--namespacedefault\
--rolemy-app-role--serviceaccountdefault:my-app-sa`
-角色定義:
```yaml
apiVersion:rbac.authorization.k8s.io/v1
kind:Role
metadata:
namespace:default
name:my-app-role
rules:
-apiGroups:[""]
resources:["pods"]
verbs:["get","watch","list"]
```
2.網(wǎng)絡(luò)策略配置:
```yaml
apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:my-app-network-policy
spec:
podSelector:
matchLabels:
app:my-app
policyTypes:
-Ingress
-Egress
ingress:
-from:
-podSelector:
matchLabels:
app:my-app
egress:
-to:
-podSelector:
matchLabels:
app:my-app
```
(三)日志管理方案
1.EFK日志收集架構(gòu):
-Fluentd配置:
```yaml
apiVersion:daemonset.k8s.io/v1
kind:DaemonSet
metadata:
name:fluentd
spec:
selector:
matchLabels:
name:fluentd
template:
metadata:
labels:
name:fluentd
spec:
containers:
-name:fluentd
image:fluent/fluentd:latest
ports:
-containerPort:24224
volumeMounts:
-name:varlog
mountPath:/var/log
-name:sys
mountPath:/sys
-name:containers
mountPath:/var/lib/docker/containers
-name:images
mountPath:/var/lib/docker/images
env:
-name:FLUENTD_CONFIG
value:/etc/fluentd/config.d/fluentd.conf
volumes:
-name:varlog
hostPath:
path:/var/log
-name:sys
hostPath:
path:/sys
-name:containers
hostPath:
path:/var/lib/docker/containers
-name:images
hostPath:
path:/var/lib/docker/images
```
-Elasticsearch配置:
```yaml
apiVersion:apps/v1
kind:Deployment
metadata:
name:elasticsearch
spec:
replicas:3
selector:
matchLabels:
app:elasticsearch
template:
metadata:
labels:
app:elasticsearch
spec:
containers:
-name:elasticsearch
image:docker.elastic.co/elasticsearch/elasticsearch:7.10.1
resources:
limits:
memory:2g
ports:
-containerPort:9200
-containerPort:9300
environment:
-name:discovery.type
value:"single-node"
```
-Kibana配置:
```yaml
apiVersion:v1
kind:ConfigMap
metadata:
name:kibana
data:
kibana.yml:|
server.host:"localhost"
elasticsearch.hosts:["http://elasticsearch:9200"]
---
apiVersion:apps/v1
kind:Deployment
metadata:
name:kibana
spec:
replicas:1
selector:
matchLabels:
app:kibana
template:
metadata:
labels:
app:kibana
spec:
containers:
-name:kibana
image:docker.elastic.co/kibana/kibana:7.10.1
ports:
-containerPort:5601
env:
-name:ELASTICSEARCH_HOSTS
value:"http://elasticsearch:9200"
```
2.日志分級(jí)策略:
-Info級(jí)別:存儲(chǔ)7天
-Warning級(jí)別:存儲(chǔ)15天
-Error級(jí)別:永久存儲(chǔ)
-配置示例:
```yaml
<matchlevel="info">
@typeelasticsearch
host=>"http://elasticsearch:9200"
tags=>["info"]
index=>"%{+yyyy.MM.dd}"
</match>
<matchlevel="warning">
@typeelasticsearch
host=>"http://elasticsearch:9200"
tags=>["warning"]
index=>"%{+yyyy.MM.dd}"
</match>
<matchlevel="error">
@typeelasticsearch
host=>"http://elasticsearch:9200"
tags=>["error"]
index=>"error-%{+yyyy.MM.dd}"
</match>
```
四、常見(jiàn)問(wèn)題排查
(一)部署失敗排查
1.日志檢查:
-Pod日志:`kubectllogs<pod-name>-c<container-name>`
-控制臺(tái)日志:`kubectldescribepod<pod-name>`
2.常見(jiàn)錯(cuò)誤處理:
-DNS問(wèn)題:`kubectlexec-it<pod-name>--nslookupkubernetes`
-網(wǎng)絡(luò)問(wèn)題:`kubectlexec-it<pod-name>--ping<service-name>`
-資源不足:`kubectldescribenodes|grep-i"Allocatedresources"`
-鏡像拉取失?。簷z查鏡像倉(cāng)庫(kù)訪問(wèn)權(quán)限和鏡像名稱
(二)性能優(yōu)化技巧
1.資源調(diào)整:
-查看容器CPU使用率:`kubectltoppod<pod-name>-n<namespace>`
-擴(kuò)大資源配額:`kubectleditdeployment<deployment-name>`
2.緩存優(yōu)化:
-Docker構(gòu)建緩存:使用`--cache-from`參數(shù)
-Kubernetes鏡像緩存:配置ImagePullSecrets
3.網(wǎng)絡(luò)優(yōu)化:
-使用IPVS調(diào)度器:`kubectlpatchnode<node-name>-p'{"spec:":"schedulerName:ipvs-scheduler"}'`
-配置節(jié)點(diǎn)親和性:減少網(wǎng)絡(luò)抖動(dòng)
(三)故障切換方案
1.主備切換流程:
(1)停止主節(jié)點(diǎn)所有Pod:`kubectldeletepods-lapp=my-app-ndefault`
(2)刪除舊Service:`kubectldeleteservicemy-app-service-ndefault`
(3)創(chuàng)建新Service:`kubectlapply-fservice.yaml`
(4)等待Pod自動(dòng)重建:`kubectlgetpods-ndefault-w`
2.自動(dòng)故障檢測(cè):
-設(shè)置健康檢查:`kubectleditdeployment/my-app`
```yaml
spec:
templates:
-spec:
containers:
-name:my-app
livenessProbe:
httpGet:
path:/health
port:80
initialDelaySeconds:60
periodSeconds:10
readinessProbe:
httpGet:
path:/ready
port:80
initialDelaySeconds:30
periodSeconds:10
```
五、版本管理
(一)變更控制流程
1.需求評(píng)估:
-提交變更請(qǐng)求(CR)
-技術(shù)可行性分析
-風(fēng)險(xiǎn)評(píng)估
2.開發(fā)規(guī)范:
-Git分支策略:
```
main
├──develop
└──feature/<feature-name>
├──develop
└──master
```
-代碼審查:要求每個(gè)PR至少2人審查
-單元測(cè)試覆蓋率≥80%
(二)發(fā)布管理
1.發(fā)布流程:
-開發(fā)環(huán)境部署:`kubectlapply-fdev/deployment.yaml`
-測(cè)試環(huán)境部署:`kubectlapply-ftest/deployment.yaml`
-預(yù)發(fā)環(huán)境部署:`kubectlapply-fstaging/deployment.yaml`
-生產(chǎn)環(huán)境部署:`kubectlapply-fprod/deployment.yaml`
2.回滾機(jī)制:
-快速回滾:`kubectlrolloutundodeployment/my-app`
-全量回滾:手動(dòng)重建舊版本鏡像
-自動(dòng)回滾:配置RolloutStrategy為OnFailure
(三)版本追蹤
1.版本命名規(guī)范:
-SemVer格式:`MAJOR.MINOR.PATCH`
-示例:`1.2.3`
2.版本記錄:
-Git標(biāo)簽:`gittag-av1.2.3-m"Releasev1.2.3"`
-發(fā)布記錄文檔:記錄每個(gè)版本變更和已知問(wèn)題
---
三、最佳實(shí)踐
(一)資源配額管理
對(duì)集群資源進(jìn)行合理分配和管理是確保公平使用、防止資源濫用和提高整體效率的關(guān)鍵。通過(guò)設(shè)置資源配額(ResourceQuota)和限制范圍(LimitRange),可以控制不同命名空間(Namespace)下的工作負(fù)載對(duì)集群資源的消耗。
1.設(shè)置Namespace配額:為特定命名空間定義資源使用的上限。當(dāng)命名空間中的工作負(fù)載請(qǐng)求的資源超過(guò)配額時(shí),新的資源請(qǐng)求將被拒絕。
```bash
創(chuàng)建一個(gè)新的命名空間用于開發(fā)環(huán)境
kubectlcreatenamespacedev
為"dev"命名空間創(chuàng)建資源配額,限制CPU和內(nèi)存的使用
kubectlcreateresourcequota--namespacedev\
--hard="requests.cpu=500m,requests.memory=1Gi,limits.cpu=1000m,limits.memory=2Gi"
驗(yàn)證配額創(chuàng)建成功
kubectlgetresourcequota-ndev
```
說(shuō)明:`requests.cpu`表示Pod請(qǐng)求的CPU核心數(shù)(500毫核),`requests.memory`表示請(qǐng)求的內(nèi)存大?。?GB)。`limits.cpu`和`limits.memory`表示允許Pod使用的最大資源量。
2.使用LimitRange限制資源申請(qǐng):為容器強(qiáng)制設(shè)置資源請(qǐng)求(requests)和限制(limits)的范圍。這可以確保容器不會(huì)請(qǐng)求過(guò)多資源,同時(shí)也為資源分配提供指導(dǎo)。
```yaml
apiVersion:v1
kind:LimitRange
metadata:
name:default-limit-range在"default"命名空間創(chuàng)建
spec:
types:
-Container限制容器資源
min:
cpu:
request:
minimum:250m容器至少請(qǐng)求250毫核CPU
memory:
request:
minimum:256Mi容器至少請(qǐng)求256Mi內(nèi)存
max:
cpu:
limit:
maximum:2000m容器最多限制使用2000毫核CPU
memory:
limit:
maximum:4Gi容器最多限制使用4Gi內(nèi)存
```
說(shuō)明:`min`字段確保容器不會(huì)過(guò)度索取資源,`max`字段防止容器占用過(guò)多資源影響其他工作負(fù)載。
(二)安全加固措施
在容器化環(huán)境中,保障應(yīng)用和集群的安全至關(guān)重要。實(shí)施適當(dāng)?shù)纳矸蒡?yàn)證、授權(quán)和網(wǎng)絡(luò)隔離措施可以顯著提高系統(tǒng)的安全性。
1.RBAC權(quán)限控制:基于角色的訪問(wèn)控制(Role-BasedAccessControl)是Kubernetes的核心安全特性之一。通過(guò)為用戶、服務(wù)賬戶和組分配特定的角色和角色綁定,可以精確控制它們對(duì)集群資源的操作權(quán)限。
創(chuàng)建服務(wù)賬戶:服務(wù)賬戶是Kubernetes中用于非人類用戶的身份,常用于工作負(fù)載(如Pod)。
```bash
kubectlcreateserviceaccountmy-app-sa--namespacedefault
查看創(chuàng)建的服務(wù)賬戶
kubectlgetserviceaccountmy-app-sa-ndefault
```
創(chuàng)建角色:角色定義了一組權(quán)限(verbs),應(yīng)用于特定的資源(resources)。
```yaml
apiVersion:rbac.authorization.k8s.io/v1
kind:Role
metadata:
namespace:default
name:my-app-role創(chuàng)建一個(gè)名為"my-app-role"的角色
spec:
允許對(duì)Pod資源執(zhí)行g(shù)et,watch,list操作
rules:
-apiGroups:[""]""表示核心API組
resources:["pods"]
verbs:["get","watch","list"]
可以添加
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州一附院崗前培訓(xùn)考試及答案解析
- 廣東省惠州市展覽館消防安全測(cè)試題十五(含答案)
- 志愿者管理與培訓(xùn)工作方案
- 鐵路行車安全員題庫(kù)及答案解析
- 核輻射安全與防護(hù)題庫(kù)及答案解析
- 證券從業(yè)財(cái)管專業(yè)考試及答案解析
- 生產(chǎn)設(shè)備維護(hù)保養(yǎng)標(biāo)準(zhǔn)化操作規(guī)程
- 2025-2030化妝品微生物控制標(biāo)準(zhǔn)與生產(chǎn)質(zhì)量管理
- 2025-2030化妝品ODM企業(yè)核心競(jìng)爭(zhēng)力構(gòu)建路徑分析
- 2025-2030功能性啤酒研發(fā)方向與健康功效驗(yàn)證專項(xiàng)調(diào)研報(bào)告
- 青海省歷年中考語(yǔ)文現(xiàn)代文閱讀真題33篇(截至2024年)
- 艾梅乙防治知識(shí)培訓(xùn)課件
- 2025年春新北師大版數(shù)學(xué)七年級(jí)下冊(cè)課件 第四章 三角形 問(wèn)題解決策略:特殊化
- 校外培訓(xùn)機(jī)構(gòu)傳染病防控健康教育制度
- 大學(xué)語(yǔ)文知到智慧樹章節(jié)測(cè)試課后答案2024年秋南昌大學(xué)
- 【MOOC】聲樂(lè)作品賞析與演唱-揚(yáng)州大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 60歲以上務(wù)工免責(zé)協(xié)議書
- 【MOOC】機(jī)械之美-神奇的礦冶機(jī)械(雙語(yǔ))-江西理工大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- T-IAC CAMRA 47.3- 2022汽車覆蓋件低碳維修技術(shù)規(guī)范 第3部分:車輛玻璃
- 前列腺癌內(nèi)分泌治療
- 信息技術(shù)居間協(xié)議書
評(píng)論
0/150
提交評(píng)論