Kubernetes 部署应用的正确姿势

Kubernetes 是 Google 开源的一个容器编排系统,它可以轻松地管理、部署和扩展容器化的应用程序。在过去的几年里,Kubernetes 已经成为了前端开发中不可或缺的技术之一。本文将介绍 Kubernetes 部署应用的正确姿势,供前端开发者参考。

Kubernetes 基础知识

在学习 Kubernetes 部署应用的正确姿势之前,我们需要了解一些 Kubernetes 的基础知识。

Pod

Pod 是 Kubernetes 中最小的部署单元。它是一个或多个容器的组合,共享相同的命名空间、网络和存储卷。Pod 可以在 Kubernetes 中进行部署、扩展和管理。

Deployment

Deployment 是 Kubernetes 中用于部署应用程序的资源对象。它描述了如何部署应用程序,包括应用程序的容器镜像、副本数、升级策略等。

Service

Service 是 Kubernetes 中用于暴露部署应用程序的服务的资源对象。Service 映射了一个固定的 IP 地址和端口号,并将请求转发给相应的 Pod。

ConfigMap

ConfigMap 是 Kubernetes 中用于存储应用程序的配置数据的资源对象。它集中存储了应用程序的配置数据,可以方便地进行更新和管理。

Secret

Secret 是 Kubernetes 中用于存储应用程序的敏感数据的资源对象。它可以存储访问数据库和 API 密钥等敏感信息。

下面是 Kubernetes 部署应用的正确姿势。

步骤一:创建 Deployment

首先,我们需要创建一个 Deployment。在创建 Deployment 时,需要指定应用程序的容器镜像、副本数、升级策略等。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-container
          image: my-app:latest
          ports:
            - containerPort: 3000

在上面的示例中,我们创建了一个名为 my-app 的部署,指定了 3 个副本。该部署的容器镜像为 my-app:latest,端口号为 3000。

步骤二:创建 Service

接下来,我们需要创建一个 Service,用于暴露 Deployment。

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - name: http
      port: 80
      targetPort: 3000
  type: LoadBalancer

在上面的示例中,我们创建了一个名为 my-app-service 的 Service。该 Service 通过 selector 选择了 my-app Deployment 中的 Pod,将请求转发给相应的 Pod。该 Service 的端口是 80,将请求转发到该 Deployment 的容器的端口 3000。此外,我们还通过 type 指定了该 Service 的类型为 LoadBalancer,该类型的 Service 可以在云平台上创建负载均衡服务。

步骤三:创建 ConfigMap

在应用程序中,我们需要存储一些配置数据,比如数据库连接信息、API 密钥等。我们可以使用 ConfigMap 来存储这些配置数据。

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  database.yml: |-
    adapter: postgresql
    host: postgres
    port: 5432
    database: my-app-db
    username: my-app-user
    password: my-app-pass
  secrets.yml: |-
    secret_key_base: abcd1234

在上面的示例中,我们创建了一个名为 my-app-config 的 ConfigMap。该 ConfigMap 包含了一个名为 database.yml 的配置文件和一个名为 secrets.yml 的配置文件。

步骤四:创建 Secret

在应用程序中,我们还需要存储一些敏感数据,比如数据库和 API 密钥。我们可以使用 Secret 来存储这些敏感数据。

apiVersion: v1
kind: Secret
metadata:
  name: my-app-secret
type: Opaque
data:
  database.yml: aW5mb3JtYXRpb24tY29uZmlnOiBwb3J0Z29zSQL=
  api_key.yml: YXBpX2tleSAtIGJ5dGVzCg==

在上面的示例中,我们创建了一个名为 my-app-secret 的 Secret。该 Secret 包含了一个名为 database.yml 的配置文件和一个名为 api_key.yml 的敏感数据。

步骤五:部署应用程序

现在,我们已经准备好了所有的 Kubernetes 资源对象。我们可以使用 kubectl apply 命令部署应用程序。

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml
kubectl apply -f secret.yaml

步骤六:访问应用程序

在 Kubernetes 集群中部署应用程序后,我们可以访问该应用程序。我们可以使用 kubectl get service 命令获取该应用程序的 Service 的 IP 地址和端口号。

$ kubectl get service my-app-service
NAME            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)        AGE
my-app-service  LoadBalancer   10.96.111.82     123.123.123.123 80:32594/TCP   1h

现在,我们可以通过浏览器访问该应用程序。在浏览器中输入 http://123.123.123.123:80 地址即可访问该应用程序。

总结

本文介绍了 Kubernetes 部署应用的正确姿势。在部署应用程序时,我们需要创建 Deployment、Service、ConfigMap 和 Secret。正确地部署应用程序可以使我们更轻松地管理、部署和扩展容器化的应用程序。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a72a6dadd4f0e0ff01a4be


纠错反馈