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