Minikube 运行k8s job 及 service

Windows环境下Minikube使用指南

1. 环境准备

  • minikube

2. 启动Minikube

3. 使用Job方式运行BusyBox

3.1 创建Job配置文件

创建名为busybox-job.yaml的文件:

yaml 复制代码
apiVersion: batch/v1
kind: Job
metadata:
  name: busybox-job
  labels:
    app: busybox
spec:
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ['sh', '-c', 'echo "Hello from BusyBox Job!"; date; echo "Job completed successfully"']
      restartPolicy: Never
  backoffLimit: 4

3.2 部署Job

powershell 复制代码
# 创建Job
kubectl apply -f busybox-job.yaml

# 查看Job状态
kubectl get jobs
kubectl get pods -l app=busybox

# 查看Job日志
kubectl logs -l app=busybox

3.3 验证Job执行

powershell 复制代码
# 检查Job是否成功完成
kubectl describe job busybox-job

# 查看Pod状态(应该显示Completed)
kubectl get pods -l app=busybox

4. 使用Service方式运行Nginx

4.1 创建Deployment和Service

创建名为nginx-deployment.yaml的文件:

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080
  type: NodePort

4.2 部署Nginx应用

powershell 复制代码
# 创建Deployment和Service
kubectl apply -f nginx-deployment.yaml

# 查看Deployment状态
kubectl get deployments
kubectl get pods -l app=nginx

# 查看Service信息
kubectl get services
kubectl describe service nginx-service

4.3 访问Nginx服务

powershell 复制代码
# 获取Minikube IP
$minikubeIP = minikube ip
Write-Host "Minikube IP: $minikubeIP"

# 测试访问Nginx
Invoke-WebRequest "http://$minikubeIP:30080"

5. 验证和监控

5.1 查看所有资源

powershell 复制代码
# 查看所有Pods
kubectl get pods --all-namespaces

# 查看所有Services
kubectl get services --all-namespaces

# 查看所有Deployments
kubectl get deployments --all-namespaces

5.2 实时监控

powershell 复制代码
# 监控Pod状态变化
kubectl get pods -w

# 查看节点资源使用
kubectl top nodes
kubectl top pods

6. 故障排除

6.1 常见问题解决

powershell 复制代码
# 重启Minikube
minikube delete
minikube start --driver=docker

# 查看Minikube日志
minikube logs

# 检查Docker状态
docker info

6.2 资源清理

powershell 复制代码
# 删除Job
kubectl delete job busybox-job

# 删除Deployment和Service
kubectl delete deployment nginx-deployment
kubectl delete service nginx-service

# 停止Minikube
minikube stop

# 删除Minikube集群
minikube delete

7. 最佳实践

7.1 配置建议

  • 为Job设置合理的backoffLimit
  • 为Deployment设置适当的副本数
  • 合理配置资源限制
  • 使用标签(label)进行资源组织

7.2 安全注意事项

  • 避免在生产环境中使用NodePort类型Service
  • 为容器设置资源限制防止资源耗尽
  • 定期更新镜像版本

8. 扩展学习

8.1 相关命令

powershell 复制代码
# 查看Minikube支持的驱动
minikube drivers

# 查看可用的Kubernetes版本
minikube get-k8s-versions

# 启动Dashboard
minikube dashboard

8.2 进阶配置

  • 配置Ingress控制器
  • 设置持久化存储
  • 配置ConfigMap和Secret
  • 实现自动伸缩