K8s 清单模板

Deployment

apiVersion: apps/v1 kind: Deployment metadata: name: myapp namespace: default spec: replicas: 3 selector: matchLabels: app: myapp strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 template: metadata: labels: app: myapp spec: containers: - name: myapp image: registry.example.com/myapp:v1.2.3 ports: - containerPort: 8080 resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "500m" memory: "512Mi" livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 15

Service

# ClusterIP(内部服务) apiVersion: v1 kind: Service metadata: name: myapp-svc spec: selector: app: myapp ports: - port: 80 targetPort: 8080 type: ClusterIP --- # LoadBalancer(对外暴露) apiVersion: v1 kind: Service metadata: name: myapp-lb spec: selector: app: myapp ports: - port: 443 targetPort: 8443 type: LoadBalancer

ConfigMap 与 Secret

apiVersion: v1 kind: ConfigMap metadata: name: myapp-config data: db_host: "postgres.default.svc.cluster.local" log_level: "info" --- apiVersion: v1 kind: Secret metadata: name: myapp-secret type: Opaque stringData: db_password: "SuperSecret123!" # 命令行创建 kubectl create secret generic myapp-secret \ --from-literal=db_password=SuperSecret123!

Ingress

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: myapp-ingress annotations: nginx.ingress.kubernetes.io/ssl-redirect: "true" cert-manager.io/cluster-issuer: letsencrypt-prod spec: ingressClassName: nginx tls: - hosts: [app.example.com] secretName: app-tls-secret rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: name: myapp-svc port: number: 80