K8s入门
1. 准备工作
在开始之前,你需要准备好以下环境:
- Kubernetes集群:可以使用Minikube(本地单节点集群)或Kubeadm(多节点集群)。
- kubectl:Kubernetes命令行工具,用于与集群交互。
- Docker:用于构建和运行容器。
安装步骤:
- 安装Docker:
- 参考Docker官方文档安装Docker。
- 安装kubectl:
- 参考Kubernetes官方文档安装kubectl。
- 安装Minikube(可选):
- 参考Minikube官方文档安装Minikube。
- 启动Minikube:
minikube start
2. Kubernetes 核心概念
在动手操作之前,先了解一些核心概念:
- Pod:最小的部署单元,包含一个或多个容器。
- Deployment:定义Pod的部署和更新策略。
- Service:为Pod提供稳定的网络访问。
- Namespace:用于资源隔离,支持多团队共享集群。
3. 创建第一个应用
步骤 1:创建一个Deployment
Deployment用于定义Pod的部署方式。以下是一个简单的Deployment配置文件(nginx-deployment.yaml):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
-
使用以下命令创建Deployment:
kubectl apply -f nginx-deployment.yaml -
查看Deployment状态:
kubectl get deployments -
查看Pod状态:
kubectl get pods
步骤 2:创建一个Service
Service用于暴露Pod的网络访问。以下是一个简单的Service配置文件(nginx-service.yaml):
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
-
使用以下命令创建Service:
kubectl apply -f nginx-service.yaml -
查看Service状态:
kubectl get services -
访问Nginx:
- 如果是Minikube,运行以下命令获取访问地址:
minikube service nginx-service
- 如果是Minikube,运行以下命令获取访问地址:
4. 常用命令
以下是一些常用的kubectl命令:
-
查看资源状态:
kubectl get pods kubectl get deployments kubectl get services -
查看Pod日志:
kubectl logs <pod-name> -
进入Pod的容器:
kubectl exec -it <pod-name> -- /bin/bash -
删除资源:
kubectl delete -f <filename.yaml> kubectl delete pod <pod-name>
5. 进阶学习
完成基础操作后,可以进一步学习以下内容:
- ConfigMap与Secret:管理配置和敏感信息。
- 持久化存储:使用PersistentVolume(PV)和PersistentVolumeClaim(PVC)。
- Helm:Kubernetes的包管理工具。
- 监控与日志:使用Prometheus、Grafana等工具监控集群。
- 安全:学习RBAC、NetworkPolicy等安全机制。
6. 学习资源
- 官方文档:Kubernetes官方文档
- 互动教程:Katacoda Kubernetes教程
- 视频教程:B站或YouTube上的Kubernetes入门视频。
通过以上步骤,你可以快速入门Kubernetes,并掌握基本的操作和概念。接下来可以根据实际需求深入学习更多高级功能!
Do not communicate by sharing memory; instead, share memory by communicating.

浙公网安备 33010602011771号