快速入门kubernetes
理解 Kubernetes 核心概念
集群(Cluster)
负责管理整个集群,包括调度、监控、维护集群状态等。
运行容器化应用的机器,每个节点上都有 Kubelet 和容器运行时(如 Docker)。
Pod
- 最小部署单元:一个 Pod 可以包含一个或多个容器,这些容器共享网络和存储资源。
服务(Service)
- 服务发现与负载均衡:Service 为一组 Pod 提供稳定的网络端点,实现负载均衡和服务发现。
部署(Deployment)
- 声明式更新:Deployment 用于定义 Pod 的部署和更新策略,支持滚动更新和回滚。
配置管理
- ConfigMap:用于存储非敏感的配置数据。
- Secret:用于存储敏感信息,如密码、密钥等。
安装 Kubernetes
本地环境
用于在本地快速搭建单节点 Kubernetes 集群。
1 2
| brew install minikube minikube start
|
Kubernetes 命令行工具,用于与集群交互。
生产环境
用于在生产环境中快速搭建多节点 Kubernetes 集群。
1 2
| sudo apt-get update && sudo apt-get install -y kubeadm kubelet kubectl sudo kubeadm init
|
基本操作
创建Pod
定义一个简单的 Pod。
1 2 3 4 5 6 7 8
| apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx
|
1
| kubectl apply -f pod.yaml
|
创建Deployment
- YAML文件
定义一个简单的 Deployment。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: nginx
|
1
| kubectl apply -f deployment.yaml
|
创建Service
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80
|
创建Service
1
| kubectl apply -f service.yaml
|
常用命令
查看资源状态
日志与调试
1
| kubectl exec -it <pod-name> -- /bin/bash
|
删除资源
1
| kubectl delete pod <pod-name>
|
1
| kubectl delete deployment <deployment-name>
|
1
| kubectl delete service <service-name>
|
进阶学习
配置管理
1 2 3 4 5 6
| apiVersion: v1 kind: ConfigMap metadata: name: my-config data: key: value
|
1 2 3 4 5 6 7 8
| apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: username: <base64-encoded-username> password: <base64-encoded-password>
|
持久化存储
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: v1 kind: PersistentVolume metadata: name: my-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: /mnt/data
|
PersistentVolumeClaim
(PVC)
1 2 3 4 5 6 7 8 9 10
| apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
|
自动扩展
- Horizontal Pod Autoscaler (HPA)
1 2 3 4 5 6 7 8 9 10 11 12
| apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: my-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-deployment minReplicas: 1 maxReplicas: 10 targetCPUUtilizationPercentage: 80
|
学习资源
- 官方文档:Kubernetes 官方文档
- 在线课程:Coursera、Udemy 等平台上的 Kubernetes 课程。
- 书籍:《Kubernetes in Action》、《Kubernetes Up & Running》等。
通过以上步骤,您可以快速入门 Kubernetes,并逐步掌握其核心概念和基本操作。随着实践的深入,您将能够更好地理解和应用 Kubernetes 的强大功能。