在微服务架构盛行的今天,容器化和编排技术已经成为现代应用部署的核心。而 Kubernetes(简称 k8s),作为容器编排领域的“扛把子”,几乎成了每个开发者和技术团队的必修课。无论你是刚接触容器技术的小白,还是有一定经验的开发者,Kubernetes 的学习曲线都堪称陡峭。
本文将从零开始,手把手带你一步步掌握 Kubernetes 的核心概念、安装配置、常用组件以及实际应用场景。无论你是想在本地搭建 Kubernetes 环境,还是想在云平台上运行分布式应用,这篇文章都能为你答疑解惑!
Kubernetes 是一个开源的容器编排平台,最初由 Google 开源,现由 CNCF(云原生计算基金会)维护。它的目标是简化容器化应用的部署、扩展和管理。
Kubernetes 的架构由多个核心组件组成:
Minikube 是一个在本地运行 Kubernetes 的工具,非常适合学习和测试。
# 安装 Docker(以 Ubuntu 为例)
sudo apt-get update && sudo apt-get install docker.io -y
sudo systemctl start docker && sudo systemctl enable docker
# 安装 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start --driver=docker
kubectl get nodes
# 下载并配置 kubectl
aliyun ecs DescribeClusterkubeconfig --region=cn-hangzhou --cluster-id=your-cluster-id > kubeconfig.yaml
export KUBECONFIG=kubeconfig.yaml
kubectl get nodes
# nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
kubectl apply -f nginx-pod.yaml
kubectl get pods
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
kubectl apply -f nginx-service.yaml
kubectl get services
# 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
kubectl apply -f nginx-deployment.yaml
kubectl rollout history deployment/nginx-deployment
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- host: your-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
kubectl apply -f ingress.yaml
# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
my.key: "my.value"
kubectl apply -f configmap.yaml
# secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
username: base64 encoded username
password: base64 encoded password
kubectl apply -f secret.yaml
kubectl describe pod
kubectl describe service
kubectl exec -it -- ping
resources:
limits:
cpu: "2"
memory: "4Gi"
requests:
cpu: "1"
memory: "2Gi"
随着 Kubernetes 的普及,越来越多的企业开始将其作为核心基础设施。未来,Kubernetes 的发展将集中在以下几个方向:
在评论区留言告诉我们:
我会定期查看并回复大家的问题!
希望这篇文章能够帮助你更好地理解和掌握 Kubernetes 的核心概念和实际操作!如果你觉得这篇文章对你有帮助,请记得点赞和分享给更多的小伙伴哦!