Kubernetes入门

最后更新: 2026-01-21 作者: Linux Team
页面目录
目录

Kubernetes概述

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

┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes架构                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                   Control Plane                     │   │
│   │  ┌──────────┐ ┌──────────┐ ┌──────────┐           │   │
│   │  │ kube-    │ │ kube-   │ │ etcd     │           │   │
│   │  │ apiserver│ │ scheduler│ │          │           │   │
│   │  └──────────┘ └──────────┘ └──────────┘           │   │
│   │  ┌──────────┐                                    │   │
│   │  │kube-controller│                               │   │
│   │  └──────────┘                                    │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                             │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                     Worker Nodes                    │   │
│   │  ┌──────────┐ ┌──────────┐ ┌──────────┐           │   │
│   │  │ kubelet  │ │ kube-proxy│ │ Container │           │   │
│   │  └──────────┘ └──────────┘ │ Runtime  │           │   │
│   │                            └──────────┘           │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

核心概念

Pod

# Pod定义
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.24
    ports:
    - containerPort: 80
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
      requests:
        memory: "64Mi"
        cpu: "250m"

Deployment

# Deployment定义
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.24
        ports:
        - containerPort: 80

Service

# Service定义
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: ClusterIP
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

kubectl命令

# 集群信息
kubectl cluster-info
kubectl get nodes
kubectl describe node <node-name>

# Pod操作
kubectl get pods
kubectl get pods -o wide
kubectl describe pod <pod-name>
kubectl logs <pod-name>
kubectl exec -it <pod-name> -- /bin/bash

# Deployment操作
kubectl get deployments
kubectl apply -f deployment.yaml
kubectl rollout status deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment

# Service操作
kubectl get services
kubectl expose deployment/nginx --type=LoadBalancer --port=80

# 缩放
kubectl scale deployment/nginx --replicas=5

# 删除
kubectl delete -f deployment.yaml

课后练习

实践任务
  1. 了解K8s核心概念
  2. 使用kubectl操作集群
  3. 部署第一个应用