Appearance
Kubernetes 入门与实战
一、核心概念
1.1 Pod
yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp
image: nginx:latest
ports:
- containerPort: 80
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"1.2 Service
yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 80
nodePort: 30007
type: NodePort1.3 Deployment
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: nginx:latest
ports:
- containerPort: 80二、高级配置
2.1 ConfigMap
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
data:
DB_HOST: "mysql-service"
DB_PORT: "3306"
DEBUG: "false"2.2 Secret
yaml
apiVersion: v1
kind: Secret
metadata:
name: myapp-secret
type: Opaque
data:
DB_PASSWORD: cGFzc3dvcmQ=
API_KEY: YXBpa2V5MTIzNA==2.3 Ingress
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
http:
paths:
- path: /app
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80三、运维命令
bash
# 查看资源
kubectl get pods
kubectl get services
kubectl get deployments
kubectl get nodes
# 查看详情
kubectl describe pod myapp-pod
kubectl describe service myapp-service
# 日志
kubectl logs myapp-pod
kubectl logs -f myapp-pod
# 进入容器
kubectl exec -it myapp-pod -- bash
# 端口转发
kubectl port-forward myapp-pod 8080:80
# 扩展副本
kubectl scale deployment myapp-deployment --replicas=5
# 滚动更新
kubectl set image deployment/myapp-deployment myapp=nginx:1.24
# 回滚
kubectl rollout undo deployment/myapp-deployment四、常用配置
4.1 资源限制
yaml
apiVersion: v1
kind: LimitRange
metadata:
name: resource-limit
spec:
limits:
- default:
memory: 256Mi
cpu: 500m
defaultRequest:
memory: 128Mi
cpu: 250m
type: Container4.2 节点选择
yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
nodeSelector:
disk: ssd
zone: us-east-1a提示:所有文章内容均为实战经验总结,部分示例来自官方文档和社区最佳实践。

