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
课后练习
实践任务
- 了解K8s核心概念
- 使用kubectl操作集群
- 部署第一个应用