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

环境准备

  1. 操作系统:建议使用Ubuntu 16.04或更高版本。
  2. Docker:Kubernetes依赖于Docker容器引擎,请确保Docker已经安装。
  3. 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的世界里探索愉快!