GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件开发 --- Kubernetes 之初体验

容器统一管理平台

Kubernetes (K8s) 是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它是目前最流行的容器管理工具之一,能够处理跨多个主机的容器化应用程序的部署、管理、调度和扩展。

举例:Kubernetes 的使用方法

假设你有一个 Web 应用,想要通过 Kubernetes 来进行管理。我们从头开始,安装、配置、部署并运行该应用。

步骤 1:安装 Kubernetes

1.1 使用 Minikube 安装(本地开发环境)

Minikube 是一个轻量级的 Kubernetes 本地开发环境,适用于学习和开发。

  1. 安装 Minikube(Windows、Linux、Mac 都支持):

    例如,在 Linux 上可以通过以下命令安装:

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    chmod +x minikube
    sudo mv minikube /usr/local/bin/
    
  2. 启动 Minikube: 在命令行运行以下命令启动 Minikube:

    minikube start
    

    这将启动一个虚拟机,并在该虚拟机上运行 Kubernetes 集群。

  3. 验证 Minikube 是否启动成功

    kubectl get nodes
    

    如果看到类似以下的输出,表示 Kubernetes 集群已经启动成功:

    NAME       STATUS   ROLES    AGE     VERSION
    minikube   Ready    master   10m     v1.21.2
    

1.2 使用 kubeadm 安装(生产环境)

如果是在生产环境中安装 Kubernetes,可以使用 kubeadm 来部署。这个过程涉及多个步骤,包括设置控制节点和工作节点、安装 kubelet 和 kubectl 等工具。

步骤 2:创建一个简单的应用

假设你有一个简单的 Web 应用(比如 Nginx),我们将使用 Kubernetes 来部署和管理它。

2.1 编写 Deployment 配置文件

在 Kubernetes 中,Deployment 是用来管理应用程序的控制器,它可以自动管理应用的副本数,确保应用始终保持运行状态。我们首先编写一个 deployment.yaml 文件来部署 Nginx。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2  # 指定应用副本数量
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest  # 使用最新的 Nginx 镜像
        ports:
        - containerPort: 80  # 暴露端口 80

2.2 部署应用

将上面的 deployment.yaml 文件保存到本地,然后通过 kubectl 部署应用。

kubectl apply -f deployment.yaml

此命令会根据配置文件创建一个 Nginx 部署,启动 2 个副本。可以通过以下命令查看部署的状态:

kubectl get deployments

输出应该类似于:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           1m

2.3 暴露应用

现在,应用已成功部署,但是我们还需要暴露它,使得外部可以访问它。Kubernetes 提供了几种方式来暴露服务,常用的是 Service

我们通过编写一个 service.yaml 文件来暴露 Nginx 服务:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer  # 暴露为 LoadBalancer 类型服务

2.4 创建 Service

执行以下命令创建服务:

kubectl apply -f service.yaml

你可以通过以下命令检查服务的状态:

kubectl get services

输出类似于:

NAME            TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx-service   LoadBalancer   10.96.0.1       <pending>     80:31010/TCP   1m

EXTERNAL-IP 在本地开发环境中通常是 <pending>,如果在云环境中,则会分配一个公共 IP 地址。

2.5 访问应用

如果你是在本地开发环境使用 Minikube,你可以通过以下命令获取 Minikube 的外部 IP 地址:

minikube service nginx-service --url

在浏览器中访问该 URL,你应该能够看到 Nginx 的欢迎页面,证明应用已成功运行。

步骤 3:扩展和管理应用

3.1 扩展副本

你可以通过 kubectl scale 命令扩展应用的副本数。例如,扩展到 5 个副本:

kubectl scale deployment nginx-deployment --replicas=5

可以使用以下命令检查当前的副本数:

kubectl get deployments

3.2 更新应用

Kubernetes 使得应用的滚动更新变得简单。如果你想更新 Nginx 版本,只需要修改 deployment.yaml 中的镜像版本,例如从 nginx:latest 更新为 nginx:1.21.0,然后执行:

kubectl apply -f deployment.yaml

Kubernetes 会自动滚动更新应用,确保最小化应用中断。

3.3 查看日志

可以查看 Nginx 容器的日志:

kubectl logs <pod-name>

获取 Pod 的名称,可以使用以下命令:

kubectl get pods

步骤 4:清理资源

如果不再需要该应用,可以使用以下命令删除:

  1. 删除部署和服务:

    kubectl delete deployment nginx-deployment
    kubectl delete service nginx-service
    
  2. 删除整个集群(仅适用于 Minikube):

    minikube stop
    minikube delete
    

总结

  • Kubernetes 是一个非常强大的容器管理平台,能够自动化容器的部署、扩展和管理。
  • 你可以使用 Minikube 在本地环境快速搭建 Kubernetes 集群进行开发。
  • 通过 DeploymentService 资源来部署和暴露应用。
  • 使用 kubectl 命令行工具进行各种管理操作,例如扩展副本、更新应用、查看日志等。

以上是 Kubernetes 的一个简单使用示例,帮助你理解如何在 Kubernetes 上部署和管理容器化应用。

posted on 2024-12-10 06:25  GKLBB  阅读(3)  评论(0编辑  收藏  举报