Kubernetes简介
Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化计算机容器化应用程序的部署、扩展和管理。它由Google开发,并在2014年作为云原生计算基金会的一部分捐赠给了社区。Kubernetes的目标是让容器化应用程序的开发、部署和管理变得简单、高效和可靠。
Kubernetes基础概念
在开始实践之前,我们需要了解一些Kubernetes的基础概念:
- Pod:Kubernetes的最小部署单位,一个Pod可以包含一个或多个容器。
- ReplicaSet:确保指定数量的Pod副本始终运行。
- Deployment:一种更高级的抽象,用于管理Pod和ReplicaSet,支持滚动更新和回滚。
- Service:一种抽象,用于定义Pod的访问方式,如通过IP或DNS名称。
- Ingress:用于外部访问集群内部服务的路由器。
- Volume:用于持久化存储,允许Pod在重启或重新调度后保持数据。
- Node:Kubernetes集群中的计算单元,可以是物理机或虚拟机。
安装Kubernetes
环境准备
- 操作系统:建议使用Ubuntu 16.04或更高版本。
- Docker:Kubernetes依赖于Docker容器引擎,请确保Docker已经安装。
- kubectl:Kubernetes命令行工具,用于与集群交互。
安装Minikube
Minikube是一个易于使用的Kubernetes发行版,适合本地开发和测试。
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
minikube start
验证安装
kubectl version
Kubernetes实践教程
创建第一个Pod
# my-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
kubectl apply -f my-pod.yaml
部署Deployment
# my-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
kubectl apply -f my-deployment.yaml
暴露Service
# my-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl apply -f my-service.yaml
访问应用
minikube service my-service --url
实战案例:部署Nginx集群
创建多个Pod
# my-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
kubectl apply -f my-pod.yaml
创建Service
# my-service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl apply -f my-service.yaml
验证集群
kubectl get pods
kubectl get services
总结
通过本文,我们学习了Kubernetes的基础概念、安装和部署Pod、Deployment和Service。接下来,你可以继续探索Kubernetes的高级特性,如Ingress、PersistentVolumes、Horizontal Pod Autoscaler等。祝你在Kubernetes的世界里探索愉快!
