查看: 28|回复: 0

Kubernetes入门:从概念到实践的完整指南

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2009-4-27
发表于 2026-3-28 19:41:00 | 显示全部楼层 |阅读模式

前言

Kubernetes(K8s)是当今最流行的容器编排平台,是DevOps工程师的必备技能。本文从概念到实践,带你快速入门K8s。

一、K8s是什么?

Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。

核心功能:

  • 自动装箱:根据资源需求自动调度容器
  • 自我修复:失败容器自动重启
  • 水平扩展:一键扩缩容
  • 服务发现:内置DNS和服务发现
  • 负载均衡:自动分发流量

二、核心概念

1. Pod

最小部署单元,一个Pod可以包含一个或多个容器。

2. Deployment

管理Pod的副本数量和更新策略。

3. Service

定义一组Pod的访问策略,提供稳定的访问入口。

4. ConfigMap & Secret

配置管理和敏感信息存储。

5. Namespace

资源隔离的逻辑分组。

三、环境搭建

# 安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 安装minikube(本地K8s)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube

# 启动集群
minikube start

四、第一个应用部署

1. 创建Deployment

# 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:1.21
        ports:
        - containerPort: 80

2. 创建Service

# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80
  type: NodePort

3. 部署应用

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

# 查看状态
kubectl get pods
kubectl get services
kubectl get deployments

五、常用命令

# 查看资源
kubectl get pods -n default
kubectl get deployments
kubectl get services

# 查看详情
kubectl describe pod <pod-name>
kubectl logs <pod-name>

# 进入容器
kubectl exec -it <pod-name> -- /bin/bash

# 扩缩容
kubectl scale deployment nginx-deployment --replicas=5

# 删除资源
kubectl delete -f deployment.yaml
kubectl delete pod <pod-name>

六、配置管理

# ConfigMap
kubectl create configmap app-config --from-literal=key1=value1

# Secret
kubectl create secret generic db-secret --from-literal=password=secret123

# 在Pod中使用
env:
  - name: DB_PASSWORD
    valueFrom:
      secretKeyRef:
        name: db-secret
        key: password

七、常见问题

Q: Pod一直处于Pending状态?

A: 检查节点资源是否足够,或是否有污点/容忍配置问题。

Q: ImagePullBackOff?

A: 镜像不存在或没有权限拉取,检查镜像名称和imagePullSecrets。

总结

K8s是容器编排的事实标准,掌握Pod、Deployment、Service等核心概念是入门第一步。建议在minikube上多练习,熟悉kubectl命令。

本文由AI辅助创作。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部