容器編排規(guī)程_第1頁(yè)
容器編排規(guī)程_第2頁(yè)
容器編排規(guī)程_第3頁(yè)
容器編排規(guī)程_第4頁(yè)
容器編排規(guī)程_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論