Kubernetes基础入门
Kubernetes基础入门
什么是Kubernetes
Kubernetes(K8s)是一个开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理。
核心架构
Master节点:
├── kube-apiserver # API服务器
├── etcd # 数据存储
├── kube-scheduler # 调度器
└── kube-controller-manager # 控制管理器
Worker节点:
├── kubelet # 节点代理
├── kube-proxy # 网络代理
└── 容器运行时(Docker/containerd)
核心概念
Pod
Pod是最小的部署单元,包含一个或多个容器。
apiVersion: v1
kind: Pod
metadata:
name: myapp
labels:
app: myapp
spec:
containers:
- name: myapp
image: nginx:latest
ports:
- containerPort: 80
Deployment
Deployment管理Pod的副本集。
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: nginx:latest
ports:
- containerPort: 80
Service
Service提供Pod的网络访问。
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
selector:
app: myapp
ports:
- port: 80
targetPort: 80
type: ClusterIP
Service类型
| 类型 | 说明 |
|---|---|
| ClusterIP | 集群内部访问 |
| NodePort | 通过节点端口访问 |
| LoadBalancer | 云平台负载均衡 |
| ExternalName | 外部服务映射 |
安装Kubernetes
使用Minikube
# 安装Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动集群
minikube start
# 查看状态
minikube status
使用kubeadm
# 安装kubeadm
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
# 初始化集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl基础命令
# 查看资源
kubectl get pods
kubectl get svc
kubectl get deployments
kubectl get nodes
# 查看详情
kubectl describe pod pod_name
kubectl describe node node_name
# 创建资源
kubectl apply -f manifest.yaml
kubectl create -f manifest.yaml
# 删除资源
kubectl delete -f manifest.yaml
kubectl delete pod pod_name
# 进入容器
kubectl exec -it pod_name -- /bin/bash
# 查看日志
kubectl logs pod_name
kubectl logs -f pod_name
实践:部署应用
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: LoadBalancer
# 部署应用
kubectl apply -f nginx-deployment.yaml
# 查看部署状态
kubectl get pods -w
# 访问服务
minikube service nginx-svc
总结
Kubernetes是云原生时代的容器编排标准。掌握其核心概念和基本操作,是学习云原生架构的基础。