chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker與Kubernetes在生產(chǎn)環(huán)境中的最佳應(yīng)用

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2025-08-18 11:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

容器化部署實(shí)踐:Docker與Kubernetes在生產(chǎn)環(huán)境中的最佳應(yīng)用

引言:為什么你的系統(tǒng)需要容器化?

還記得上次凌晨3點(diǎn)被電話叫醒處理生產(chǎn)環(huán)境故障嗎?還記得因?yàn)榄h(huán)境不一致導(dǎo)致的"在我機(jī)器上能跑"的尷尬嗎?如果你正在經(jīng)歷這些痛點(diǎn),那么這篇文章將徹底改變你的運(yùn)維生涯。

在我過(guò)去8年的運(yùn)維經(jīng)歷中,見(jiàn)證了從傳統(tǒng)物理機(jī)到虛擬化,再到容器化的完整演進(jìn)。今天,我將分享在管理超過(guò)1000個(gè)容器、日均處理10億請(qǐng)求的生產(chǎn)環(huán)境中積累的實(shí)戰(zhàn)經(jīng)驗(yàn)。

一、Docker:從入門到生產(chǎn)級(jí)實(shí)踐

1.1 Docker鏡像優(yōu)化:讓你的鏡像從1GB瘦身到50MB

很多人使用Docker時(shí)最大的誤區(qū)就是把它當(dāng)虛擬機(jī)用。讓我用一個(gè)真實(shí)案例說(shuō)明如何優(yōu)化:

優(yōu)化前的Dockerfile(鏡像大小:1.2GB)

FROMubuntu:20.04
RUNapt-get update && apt-get install -y python3 python3-pip nodejs npm
COPY. /app
WORKDIR/app
RUNpip3 install -r requirements.txt
RUNnpm install
CMD["python3","app.py"]

優(yōu)化后的Dockerfile(鏡像大?。?5MB)

# 構(gòu)建階段
FROMpython:3.9-alpine AS builder
WORKDIR/app
COPYrequirements.txt .
RUNpip install --user -r requirements.txt

# 運(yùn)行階段
FROMpython:3.9-alpine
RUNapk add --no-cache libpq
COPY--from=builder /root/.local /root/.local
COPY--from=builder /app /app
WORKDIR/app
COPY. .
ENVPATH=/root/.local/bin:$PATH
CMD["python","app.py"]

關(guān)鍵優(yōu)化技巧:

? 使用Alpine Linux作為基礎(chǔ)鏡像

? 采用多階段構(gòu)建減少最終鏡像層數(shù)

? 合并RUN命令減少鏡像層

? 清理不必要的緩存和臨時(shí)文件

? 使用.dockerignore排除無(wú)關(guān)文件

1.2 生產(chǎn)環(huán)境Docker安全實(shí)踐

安全永遠(yuǎn)是生產(chǎn)環(huán)境的第一要?jiǎng)?wù)。以下是我總結(jié)的Docker安全清單:

# docker-compose.yml 安全配置示例
version:'3.8'
services:
app:
 image:myapp:latest
 security_opt:
  -no-new-privileges:true
 cap_drop:
  -ALL
 cap_add:
  -NET_BIND_SERVICE
 read_only:true
 tmpfs:
  -/tmp
 user:"1000:1000"
 networks:
  -internal
 deploy:
  resources:
   limits:
    cpus:'0.5'
    memory:512M
   reservations:
    cpus:'0.25'
    memory:256M

核心安全措施:

? 以非root用戶運(yùn)行容器

? 限制容器capabilities

? 使用只讀文件系統(tǒng)

? 設(shè)置資源限制防止資源耗盡攻擊

? 定期掃描鏡像漏洞

1.3 Docker網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)

在生產(chǎn)環(huán)境中,合理的網(wǎng)絡(luò)架構(gòu)至關(guān)重要:

# 創(chuàng)建自定義網(wǎng)絡(luò)
docker network create --driver bridge 
 --subnet=172.20.0.0/16 
 --ip-range=172.20.240.0/20 
 --gateway=172.20.0.1 
 production-network

# 容器間通信最佳實(shí)踐
docker run -d 
 --name backend 
 --network production-network 
 --network-alias api-server 
 myapp:backend

docker run -d 
 --name frontend 
 --network production-network 
 -e API_URL=http://api-server:8080 
 myapp:frontend

二、Kubernetes:構(gòu)建企業(yè)級(jí)容器編排平臺(tái)

2.1 K8s架構(gòu)設(shè)計(jì):高可用集群部署方案

一個(gè)生產(chǎn)級(jí)的Kubernetes集群需要考慮的不僅僅是功能,更重要的是穩(wěn)定性和可擴(kuò)展性。

高可用Master節(jié)點(diǎn)配置:

# kubeadm-config.yaml
apiVersion:kubeadm.k8s.io/v1beta3
kind:ClusterConfiguration
kubernetesVersion:v1.28.0
controlPlaneEndpoint:"k8s-api.example.com:6443"
networking:
serviceSubnet:"10.96.0.0/12"
podSubnet:"10.244.0.0/16"
dnsDomain:"cluster.local"
etcd:
external:
 endpoints:
  -https://etcd-0.example.com:2379
  -https://etcd-1.example.com:2379
  -https://etcd-2.example.com:2379
 caFile:/etc/kubernetes/pki/etcd/ca.crt
 certFile:/etc/kubernetes/pki/etcd/client.crt
 keyFile:/etc/kubernetes/pki/etcd/client.key

2.2 應(yīng)用部署最佳實(shí)踐:從開(kāi)發(fā)到生產(chǎn)的完整流程

讓我們通過(guò)一個(gè)完整的微服務(wù)部署案例來(lái)展示K8s的強(qiáng)大能力:

1. 應(yīng)用配置管理(ConfigMap & Secret)

apiVersion:v1
kind:ConfigMap
metadata:
name:app-config
namespace:production
data:
database.conf:|
  host=db.example.com
  port=5432
  pool_size=20
redis.conf:|
  host=redis.example.com
  port=6379
 
---
apiVersion:v1
kind:Secret
metadata:
name:app-secrets
namespace:production
type:Opaque
data:
db-password:cGFzc3dvcmQxMjM=# base64編碼
api-key:YWJjZGVmZ2hpams=

2. 應(yīng)用部署(Deployment)

apiVersion:apps/v1
kind:Deployment
metadata:
name:api-server
namespace:production
labels:
 app:api-server
 version:v2.1.0
spec:
replicas:3
strategy:
 type:RollingUpdate
 rollingUpdate:
  maxSurge:1
  maxUnavailable:0
selector:
 matchLabels:
  app:api-server
template:
 metadata:
  labels:
   app:api-server
   version:v2.1.0
 spec:
  affinity:
   podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    -labelSelector:
      matchExpressions:
      -key:app
       operator:In
       values:
       -api-server
     topologyKey:kubernetes.io/hostname
  containers:
  -name:api-server
   image:registry.example.com/api-server:v2.1.0
   ports:
   -containerPort:8080
    name:http
   -containerPort:9090
    name:metrics
   env:
   -name:DB_PASSWORD
    valueFrom:
     secretKeyRef:
      name:app-secrets
      key:db-password
   volumeMounts:
   -name:config
    mountPath:/etc/config
    readOnly:true
   resources:
    requests:
     memory:"256Mi"
     cpu:"250m"
    limits:
     memory:"512Mi"
     cpu:"500m"
   livenessProbe:
    httpGet:
     path:/health
     port:8080
    initialDelaySeconds:30
    periodSeconds:10
   readinessProbe:
    httpGet:
     path:/ready
     port:8080
    initialDelaySeconds:5
    periodSeconds:5
  volumes:
  -name:config
   configMap:
    name:app-config

3. 服務(wù)暴露(Service & Ingress)

apiVersion:v1
kind:Service
metadata:
name:api-server-service
namespace:production
spec:
type:ClusterIP
selector:
 app:api-server
ports:
-port:80
 targetPort:8080
 name:http
 
---
apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:api-ingress
namespace:production
annotations:
 nginx.ingress.kubernetes.io/rewrite-target:/
 nginx.ingress.kubernetes.io/ssl-redirect:"true"
 cert-manager.io/cluster-issuer:"letsencrypt-prod"
spec:
ingressClassName:nginx
tls:
-hosts:
 -api.example.com
 secretName:api-tls-secret
rules:
-host:api.example.com
 http:
  paths:
  -path:/
   pathType:Prefix
   backend:
    service:
     name:api-server-service
     port:
      number:80

2.3 自動(dòng)擴(kuò)縮容策略:讓你的系統(tǒng)具備彈性

水平自動(dòng)擴(kuò)縮容(HPA)配置:

apiVersion:autoscaling/v2
kind:HorizontalPodAutoscaler
metadata:
name:api-server-hpa
namespace:production
spec:
scaleTargetRef:
 apiVersion:apps/v1
 kind:Deployment
 name:api-server
minReplicas:3
maxReplicas:20
metrics:
-type:Resource
 resource:
  name:cpu
  target:
   type:Utilization
   averageUtilization:70
-type:Resource
 resource:
  name:memory
  target:
   type:Utilization
   averageUtilization:80
-type:Pods
 pods:
  metric:
   name:http_requests_per_second
  target:
   type:AverageValue
   averageValue:"1000"
behavior:
 scaleDown:
  stabilizationWindowSeconds:300
  policies:
  -type:Percent
   value:50
   periodSeconds:60
 scaleUp:
  stabilizationWindowSeconds:0
  policies:
  -type:Percent
   value:100
   periodSeconds:30
  -type:Pods
   value:5
   periodSeconds:60

三、監(jiān)控與日志:構(gòu)建可觀測(cè)性平臺(tái)

3.1 Prometheus + Grafana監(jiān)控體系

部署Prometheus監(jiān)控棧:

# prometheus-config.yaml
apiVersion:v1
kind:ConfigMap
metadata:
name:prometheus-config
namespace:monitoring
data:
prometheus.yml:|
  global:
   scrape_interval: 15s
   evaluation_interval: 15s
  scrape_configs:
  - job_name: 'kubernetes-pods'
   kubernetes_sd_configs:
   - role: pod
   relabel_configs:
   - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    action: keep
    regex: true
   - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    action: replace
    target_label: __metrics_path__
    regex: (.+)
   - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
    action: replace
    regex: ([^:]+)(?::d+)?;(d+)
    replacement: $1:$2
    target_label: __address__

自定義監(jiān)控指標(biāo)示例:

# Python應(yīng)用集成Prometheus
fromprometheus_clientimportCounter, Histogram, Gauge, start_http_server
importtime

# 定義指標(biāo)
request_count = Counter('app_requests_total','Total requests', ['method','endpoint'])
request_duration = Histogram('app_request_duration_seconds','Request duration', ['method','endpoint'])
active_connections = Gauge('app_active_connections','Active connections')

# 在應(yīng)用中使用
@request_duration.labels(method='GET', endpoint='/api/users').time()
defget_users():
  request_count.labels(method='GET', endpoint='/api/users').inc()
 # 業(yè)務(wù)邏輯
 returnusers

# 啟動(dòng)metrics服務(wù)器
start_http_server(9090)

3.2 ELK日志收集方案

Fluentd配置示例:

apiVersion:v1
kind:ConfigMap
metadata:
name:fluentd-config
namespace:kube-system
data:
fluent.conf:|
  
   @type tail
   path /var/log/containers/*.log
   pos_file /var/log/fluentd-containers.log.pos
   tag kubernetes.*
   
    @type json
    time_format %Y-%m-%dT%H:%M:%S.%NZ
   
  
 
 
  @typekubernetes_metadata
 
 
 
  @typeelasticsearch
  hostelasticsearch.elastic-system.svc.cluster.local
  port9200
  logstash_formattrue
  logstash_prefixkubernetes
  
   @typefile
   path/var/log/fluentd-buffers/kubernetes.system.buffer
   flush_modeinterval
   retry_typeexponential_backoff
   flush_interval5s
   retry_foreverfalse
   retry_max_interval30
   chunk_limit_size2M
   queue_limit_length8
   overflow_actionblock
  
 

四、CI/CD集成:實(shí)現(xiàn)真正的DevOps

4.1 GitLab CI/CD Pipeline配置

# .gitlab-ci.yml
stages:
-build
-test
-security
-deploy

variables:
DOCKER_DRIVER:overlay2
DOCKER_TLS_CERTDIR:""
REGISTRY:registry.example.com
IMAGE_TAG:$CI_COMMIT_SHORT_SHA

build:
stage:build
image:docker:20.10
services:
 -docker:20.10-dind
script:
 -dockerbuild-t$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG.
 -dockerpush$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG
only:
 -main
 -develop

test:
stage:test
image:$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG
script:
 -pytesttests/--cov=app--cov-report=xml
 -coveragereport
coverage:'/TOTAL.*s+(d+%)$/'
artifacts:
 reports:
  coverage_report:
   coverage_format:cobertura
   path:coverage.xml

security-scan:
stage:security
image:aquasec/trivy:latest
script:
 -trivyimage--severityHIGH,CRITICAL$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG
allow_failure:false

deploy-production:
stage:deploy
image:bitnami/kubectl:latest
script:
 -kubectlsetimagedeployment/api-serverapi-server=$REGISTRY/$CI_PROJECT_NAME:$IMAGE_TAG-nproduction
 -kubectlrolloutstatusdeployment/api-server-nproduction
environment:
 name:production
 url:https://api.example.com
only:
 -main
when:manual

4.2 藍(lán)綠部署與金絲雀發(fā)布

金絲雀發(fā)布配置:

# 使用Flagger實(shí)現(xiàn)自動(dòng)化金絲雀發(fā)布
apiVersion:flagger.app/v1beta1
kind:Canary
metadata:
name:api-server
namespace:production
spec:
targetRef:
 apiVersion:apps/v1
 kind:Deployment
 name:api-server
service:
 port:80
 targetPort:8080
 gateways:
 -public-gateway.istio-system.svc.cluster.local
 hosts:
 -api.example.com
analysis:
 interval:1m
 threshold:10
 maxWeight:50
 stepWeight:5
 metrics:
 -name:request-success-rate
  thresholdRange:
   min:99
  interval:1m
 -name:request-duration
  thresholdRange:
   max:500
  interval:1m
webhooks:
 -name:load-test
  url:http://flagger-loadtester.test/
  timeout:5s
  metadata:
   cmd:"hey -z 1m -q 10 -c 2 http://api.example.com/"

五、故障處理與性能優(yōu)化

5.1 常見(jiàn)問(wèn)題排查清單

Pod無(wú)法啟動(dòng)問(wèn)題排查:

# 1. 查看Pod狀態(tài)
kubectl get pods -n production -o wide

# 2. 查看Pod事件
kubectl describe pod  -n production

# 3. 查看容器日志
kubectl logs  -n production --previous

# 4. 進(jìn)入容器調(diào)試
kubectlexec-it  -n production -- /bin/sh

# 5. 查看資源使用情況
kubectl top pods -n production

# 6. 檢查網(wǎng)絡(luò)連通性
kubectl run tmp-shell --rm-i --tty--image nicolaka/netshoot -- /bin/bash

5.2 性能優(yōu)化實(shí)戰(zhàn)

JVM應(yīng)用在K8s中的優(yōu)化:

# Dockerfile優(yōu)化
FROMopenjdk:11-jre-slim
ENVJAVA_OPTS="-XX:MaxRAMPercentage=75.0 
       -XX:+UseG1GC 
       -XX:+UnlockExperimentalVMOptions 
       -XX:+UseCGroupMemoryLimitForHeap"
COPYapp.jar /app.jar
ENTRYPOINT["sh","-c","java$JAVA_OPTS-jar /app.jar"]

資源限制優(yōu)化策略:

resources:
requests:
 memory:"1Gi"
 cpu:"500m"
limits:
 memory:"2Gi"
 cpu:"1000m"
# 經(jīng)驗(yàn)法則:
# - requests設(shè)置為平均使用量
# - limits設(shè)置為峰值使用量的1.2-1.5倍
# - CPU limits可以適當(dāng)放寬,內(nèi)存limits要嚴(yán)格控制

六、安全加固:打造銅墻鐵壁

6.1 RBAC權(quán)限管理

# 創(chuàng)建只讀用戶示例
apiVersion:v1
kind:ServiceAccount
metadata:
name:readonly-user
namespace:production

---
apiVersion:rbac.authorization.k8s.io/v1
kind:Role
metadata:
name:readonly-role
namespace:production
rules:
-apiGroups:["","apps","batch"]
resources:["pods","services","deployments","jobs"]
verbs:["get","list","watch"]

---
apiVersion:rbac.authorization.k8s.io/v1
kind:RoleBinding
metadata:
name:readonly-binding
namespace:production
subjects:
-kind:ServiceAccount
name:readonly-user
namespace:production
roleRef:
kind:Role
name:readonly-role
apiGroup:rbac.authorization.k8s.io

6.2 網(wǎng)絡(luò)策略(Network Policy)

apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:api-server-netpol
namespace:production
spec:
podSelector:
 matchLabels:
  app:api-server
policyTypes:
-Ingress
-Egress
ingress:
-from:
 -namespaceSelector:
   matchLabels:
    name:production
 -podSelector:
   matchLabels:
    app:frontend
 ports:
 -protocol:TCP
  port:8080
egress:
-to:
 -namespaceSelector:
   matchLabels:
    name:production
 ports:
 -protocol:TCP
  port:5432# PostgreSQL
 -protocol:TCP
  port:6379# Redis
-to:
 -namespaceSelector:{}
  podSelector:
   matchLabels:
    k8s-app:kube-dns
 ports:
 -protocol:UDP
  port:53

七、成本優(yōu)化:讓每一分錢都花在刀刃上

7.1 資源利用率優(yōu)化

Vertical Pod Autoscaler配置:

apiVersion:autoscaling.k8s.io/v1
kind:VerticalPodAutoscaler
metadata:
name:api-server-vpa
namespace:production
spec:
targetRef:
 apiVersion:apps/v1
 kind:Deployment
 name:api-server
updatePolicy:
 updateMode:"Auto"
resourcePolicy:
 containerPolicies:
 -containerName:api-server
  minAllowed:
   cpu:100m
   memory:128Mi
  maxAllowed:
   cpu:2
   memory:2Gi

7.2 節(jié)點(diǎn)資源優(yōu)化

# 設(shè)置節(jié)點(diǎn)污點(diǎn)實(shí)現(xiàn)資源隔離
kubectl taint nodes gpu-node-1 gpu=true:NoSchedule

# Pod中使用容忍度
tolerations:
- key:"gpu"
 operator:"Equal"
 value:"true"
 effect:"NoSchedule"

八、實(shí)戰(zhàn)案例:從0到1搭建高可用微服務(wù)架構(gòu)

讓我們通過(guò)一個(gè)完整的電商系統(tǒng)來(lái)展示如何將上述所有技術(shù)整合:

8.1 系統(tǒng)架構(gòu)設(shè)計(jì)

# namespace隔離
apiVersion:v1
kind:Namespace
metadata:
name:ecommerce-prod
labels:
 istio-injection:enabled
 
---
# 微服務(wù)部署示例:訂單服務(wù)
apiVersion:apps/v1
kind:Deployment
metadata:
name:order-service
namespace:ecommerce-prod
spec:
replicas:5
selector:
 matchLabels:
  app:order-service
template:
 metadata:
  labels:
   app:order-service
   version:v1.0.0
  annotations:
   prometheus.io/scrape:"true"
   prometheus.io/port:"9090"
 spec:
  containers:
  -name:order-service
   image:registry.example.com/order-service:v1.0.0
   ports:
   -containerPort:8080
    name:http
   -containerPort:9090
    name:metrics
   env:
   -name:SPRING_PROFILES_ACTIVE
    value:"production"
   -name:DB_HOST
    valueFrom:
     configMapKeyRef:
      name:db-config
      key:host
   livenessProbe:
    httpGet:
     path:/actuator/health/liveness
     port:8080
    initialDelaySeconds:60
    periodSeconds:10
   readinessProbe:
    httpGet:
     path:/actuator/health/readiness
     port:8080
    initialDelaySeconds:30
    periodSeconds:5
   resources:
    requests:
     memory:"512Mi"
     cpu:"250m"
    limits:
     memory:"1Gi"
     cpu:"500m"

8.2 服務(wù)網(wǎng)格配置(Istio)

# VirtualService配置
apiVersion:networking.istio.io/v1beta1
kind:VirtualService
metadata:
name:order-service-vs
namespace:ecommerce-prod
spec:
hosts:
-order-service
http:
-match:
 -headers:
   version:
    exact:v2
 route:
 -destination:
   host:order-service
   subset:v2
  weight:100
-route:
 -destination:
   host:order-service
   subset:v1
  weight:90
 -destination:
   host:order-service
   subset:v2
  weight:10
  
---
# DestinationRule配置
apiVersion:networking.istio.io/v1beta1
kind:DestinationRule
metadata:
name:order-service-dr
namespace:ecommerce-prod
spec:
host:order-service
trafficPolicy:
 connectionPool:
  tcp:
   maxConnections:100
  http:
   http1MaxPendingRequests:50
   h2MaxRequests:100
 loadBalancer:
  simple:LEAST_REQUEST
 outlierDetection:
  consecutiveErrors:5
  interval:30s
  baseEjectionTime:30s
subsets:
-name:v1
 labels:
  version:v1.0.0
-name:v2
 labels:
  version:v2.0.0

九、故障恢復(fù)與災(zāi)備方案

9.1 備份策略

#!/bin/bash
# etcd備份腳本
ETCDCTL_API=3 etcdctl 
 --endpoints=https://127.0.0.1:2379 
 --cacert=/etc/kubernetes/pki/etcd/ca.crt 
 --cert=/etc/kubernetes/pki/etcd/server.crt 
 --key=/etc/kubernetes/pki/etcd/server.key 
 snapshot save /backup/etcd-snapshot-$(date+%Y%m%d-%H%M%S).db

# 使用Velero進(jìn)行集群備份
velero backup create prod-backup 
 --include-namespaces ecommerce-prod 
 --snapshot-volumes 
 --ttl 720h

9.2 跨區(qū)域容災(zāi)

# Federation配置示例
apiVersion:types.kubefed.io/v1beta1
kind:FederatedDeployment
metadata:
name:order-service
namespace:ecommerce-prod
spec:
template:
 metadata:
  labels:
   app:order-service
 spec:
  replicas:3
  # ... deployment spec
placement:
 clusters:
 -name:cluster-beijing
 -name:cluster-shanghai
overrides:
-clusterName:cluster-beijing
 clusterOverrides:
 -path:"/spec/replicas"
  value:5
-clusterName:cluster-shanghai
 clusterOverrides:
 -path:"/spec/replicas"
  value:3

十、性能測(cè)試與壓測(cè)方案

10.1 使用K6進(jìn)行壓力測(cè)試

// k6-test.js
importhttpfrom'k6/http';
import{ check, sleep }from'k6';
import{Rate}from'k6/metrics';

constfailureRate =newRate('failed_requests');

exportletoptions = {
stages: [
  {duration:'2m',target:100}, // 逐步增加到100個(gè)用戶
  {duration:'5m',target:100}, // 保持100個(gè)用戶
  {duration:'2m',target:200}, // 增加到200個(gè)用戶
  {duration:'5m',target:200}, // 保持200個(gè)用戶
  {duration:'2m',target:0},  // 逐步降到0
 ],
thresholds: {
 http_req_duration: ['p(95)<500'],?// 95%的請(qǐng)求在500ms內(nèi)完成
? ??failed_requests: ['rate<0.1'], ? ?// 錯(cuò)誤率低于10%
? },
};

exportdefaultfunction() {
let?response = http.get('https://api.example.com/orders');

check(response, {
? ??'status is 200':?(r) =>r.status===200,
 'response time < 500ms':?(r) =>r.timings.duration

實(shí)戰(zhàn)總結(jié):我的十大運(yùn)維心得

1.永遠(yuǎn)不要在生產(chǎn)環(huán)境直接操作:先在測(cè)試環(huán)境驗(yàn)證,使用GitOps管理所有變更

2.監(jiān)控先行:沒(méi)有監(jiān)控的系統(tǒng)等于裸奔,先部署監(jiān)控再上線業(yè)務(wù)

3.自動(dòng)化一切:能自動(dòng)化的絕不手動(dòng),減少人為錯(cuò)誤

4.做好容量規(guī)劃:提前預(yù)估資源需求,避免臨時(shí)擴(kuò)容的被動(dòng)局面

5.災(zāi)備演練常態(tài)化:定期進(jìn)行故障演練,不要等真出事才發(fā)現(xiàn)備份不可用

6.文檔即代碼:所有配置和流程都要文檔化,最好是代碼化

7.安全是紅線:寧可性能差一點(diǎn),也不能有安全隱患

8.保持學(xué)習(xí):容器技術(shù)發(fā)展迅速,持續(xù)學(xué)習(xí)才能不被淘汰

9.關(guān)注成本:技術(shù)優(yōu)化的同時(shí)要考慮成本效益

10.建立SRE文化:從救火隊(duì)員轉(zhuǎn)變?yōu)橄到y(tǒng)可靠性工程師

結(jié)語(yǔ):開(kāi)啟你的容器化之旅

容器化不是銀彈,但它確實(shí)能解決傳統(tǒng)運(yùn)維的很多痛點(diǎn)。從Docker到Kubernetes,從微服務(wù)到服務(wù)網(wǎng)格,這條路雖然充滿挑戰(zhàn),但也充滿機(jī)遇。

記住,最好的架構(gòu)是演進(jìn)出來(lái)的,不是設(shè)計(jì)出來(lái)的。從小處著手,逐步優(yōu)化,持續(xù)改進(jìn)。今天分享的這些實(shí)踐,都是我在無(wú)數(shù)個(gè)不眠夜晚中總結(jié)出來(lái)的經(jīng)驗(yàn)教訓(xùn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    521

    瀏覽量

    22720
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    525

    瀏覽量

    13687
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    254

    瀏覽量

    9326

原文標(biāo)題:容器化部署實(shí)踐:Docker與Kubernetes在生產(chǎn)環(huán)境中的最佳應(yīng)用

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Kubernetes之路 2 - 利用LXCFS提升容器資源可見(jiàn)性

    摘要: 這是本系列的第2篇內(nèi)容,將介紹在DockerKubernetes環(huán)境解決遺留應(yīng)用無(wú)法識(shí)別容器資源限制的問(wèn)題。本系列文章記錄了企業(yè)客戶在應(yīng)用
    發(fā)表于 04-17 14:05

    如何在Docker創(chuàng)建容器

    Docker是一個(gè)開(kāi)源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開(kāi)發(fā)者在筆記本上編譯測(cè)試通過(guò)的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal
    發(fā)表于 01-03 15:58

    dockerjava環(huán)境的部署

    docker 部署java環(huán)境以及常用應(yīng)用(持續(xù)更新)
    發(fā)表于 05-24 15:44

    RFID在生產(chǎn)線管理的應(yīng)用有哪些?

    傳統(tǒng)生產(chǎn)線管理存在的問(wèn)題是什么?RFID在生產(chǎn)線管理的應(yīng)用有哪些?生產(chǎn)線實(shí)時(shí)RFID系統(tǒng)后的收益如何?
    發(fā)表于 05-19 06:24

    混合云環(huán)境Kubernetes HPC使用經(jīng)驗(yàn)

    該公司成立于2013年,致力于開(kāi)發(fā)HPC容器技術(shù)和容器化工程應(yīng)用程序,以促進(jìn)在共享的本地或按需云環(huán)境訪問(wèn)和使用工程HPC工作負(fù)載。本文及上一篇文章,他們描述了過(guò)去12個(gè)月在Kubernet
    的頭像 發(fā)表于 03-21 11:47 ?2288次閱讀

    Docker工具分類列表

    不僅僅是一個(gè)容器編排器,還是一個(gè)用于在生產(chǎn)環(huán)境運(yùn)行Docker的完整的容器管理平臺(tái)。RancherOS是一個(gè)基于容器的操作系統(tǒng)(OS),能夠提供諸如全局和本地負(fù)載平衡,多主機(jī)聯(lián)網(wǎng)以及
    的頭像 發(fā)表于 05-19 16:58 ?2732次閱讀

    Kubernetes是什么,一文了解Kubernetes

    香了。 這時(shí)候就需要我們的主角 Kubernetes 上場(chǎng)了,先來(lái)了解一下 Kubernetes 的基本概念,后面再介紹實(shí)踐,由淺入深步步為營(yíng)。 關(guān)于 Kubernetes 的基本概念我們將會(huì)圍繞如下七點(diǎn)展開(kāi): 一、
    發(fā)表于 12-21 13:40 ?1981次閱讀
    <b class='flag-5'>Kubernetes</b>是什么,一文了解<b class='flag-5'>Kubernetes</b>

    docker-book DockerKubernetes開(kāi)源書(shū)

    gitee-docker-book.zip
    發(fā)表于 04-19 14:22 ?0次下載
    <b class='flag-5'>docker</b>-book <b class='flag-5'>Docker</b>與<b class='flag-5'>Kubernetes</b>開(kāi)源書(shū)

    什么是Kubernetes容器運(yùn)行時(shí)CRI

    起初,Docker是事實(shí)上的容器技術(shù)標(biāo)準(zhǔn),Kubernetes v1.5之前的代碼中直接調(diào)用Docker API,實(shí)現(xiàn)容器運(yùn)行時(shí)的相關(guān)操作。
    的頭像 發(fā)表于 02-20 16:22 ?2594次閱讀
    什么是<b class='flag-5'>Kubernetes</b>容器運(yùn)行時(shí)CRI

    Docker、Containerd和Kubernetes之間的關(guān)系

    Docker是最早出現(xiàn)的那批容器引擎工具,所以它最早占領(lǐng)了市場(chǎng)。Kubernetes主要用來(lái)做容器編排,用來(lái)管理容器集群,是一個(gè)平臺(tái)。
    的頭像 發(fā)表于 04-08 10:44 ?2226次閱讀

    Docker運(yùn)行環(huán)境安裝

    、發(fā)布、測(cè)試和部署,可以幫助開(kāi)發(fā)人員將最新版本代碼應(yīng)用到生產(chǎn)環(huán)境Docker可以安裝在多個(gè)平臺(tái)中,包括Mac、Windows和Linux。不過(guò),
    的頭像 發(fā)表于 10-29 11:28 ?937次閱讀

    生產(chǎn)環(huán)境Kubernetes容器安全的最佳實(shí)踐

    隨著容器化技術(shù)的快速發(fā)展,Kubernetes已成為企業(yè)級(jí)容器編排的首選平臺(tái)。然而,在享受Kubernetes帶來(lái)的便利性和可擴(kuò)展性的同時(shí),安全問(wèn)題也日益凸顯。本文將從運(yùn)維工程師的角度,深入探討生產(chǎn)
    的頭像 發(fā)表于 07-14 11:09 ?338次閱讀

    Docker容器安全攻防實(shí)戰(zhàn)案例

    在云原生時(shí)代,Docker已成為現(xiàn)代應(yīng)用部署的基石。然而,容器化帶來(lái)便利的同時(shí),也引入了新的安全挑戰(zhàn)。作為一名在生產(chǎn)環(huán)境管理過(guò)數(shù)千個(gè)容器的運(yùn)維工程師,我將通過(guò)真實(shí)的攻防實(shí)戰(zhàn)案例,帶你
    的頭像 發(fā)表于 08-05 09:52 ?542次閱讀

    Kubernetes安全加固的核心技術(shù)

    在生產(chǎn)環(huán)境,Kubernetes集群的安全性直接關(guān)系到企業(yè)數(shù)據(jù)安全和業(yè)務(wù)穩(wěn)定性。本文將從實(shí)戰(zhàn)角度,帶你掌握K8s安全加固的核心技術(shù)。
    的頭像 發(fā)表于 08-18 11:18 ?329次閱讀

    Docker生產(chǎn)環(huán)境安全配置指南

    據(jù)統(tǒng)計(jì),超過(guò)60%的企業(yè)在Docker生產(chǎn)環(huán)境存在嚴(yán)重安全漏洞。本文將揭示那些容易被忽視但致命的安全隱患,并提供完整的企業(yè)級(jí)解決方案。
    的頭像 發(fā)表于 09-02 16:27 ?589次閱讀