kubernetes-manifests
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseKubernetes Manifests
Kubernetes 清单文件
Understanding and writing Kubernetes manifest files.
了解并编写Kubernetes清单文件。
Basic Structure
基本结构
yaml
apiVersion: v1
kind: Pod
metadata:
name: my-app
namespace: default
labels:
app: my-app
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80yaml
apiVersion: v1
kind: Pod
metadata:
name: my-app
namespace: default
labels:
app: my-app
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80Common Resource Types
常见资源类型
Deployment
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: app
image: myapp:1.0.0
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"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: app
image: myapp:1.0.0
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"Service
Service
yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalanceryaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancerConfigMap
ConfigMap
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
database.url: "postgres://db:5432"
log.level: "info"yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
database.url: "postgres://db:5432"
log.level: "info"Secret
Secret
yaml
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
data:
password: cGFzc3dvcmQxMjM= # base64 encodedyaml
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
type: Opaque
data:
password: cGFzc3dvcmQxMjM= # base64 encodedBest Practices
最佳实践
Resource Requests and Limits
资源请求和限制
Always define resource requests and limits:
yaml
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"始终定义资源请求和限制:
yaml
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"Liveness and Readiness Probes
存活探针和就绪探针
yaml
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5yaml
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5Labels and Selectors
标签和选择器
Use consistent labeling:
yaml
metadata:
labels:
app: my-app
version: v1
environment: production使用一致的标签:
yaml
metadata:
labels:
app: my-app
version: v1
environment: productionValidation
验证
bash
undefinedbash
undefinedValidate manifest syntax
验证清单语法
kubectl apply --dry-run=client -f manifest.yaml
kubectl apply --dry-run=client -f manifest.yaml
Validate with kubeconform
使用kubeconform验证
kubeconform manifest.yaml
kubeconform manifest.yaml
Validate against live cluster
针对运行中的集群验证
kubectl apply --dry-run=server -f manifest.yaml
undefinedkubectl apply --dry-run=server -f manifest.yaml
undefined