We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
当前 kubernetes 盛行,相信大家对如何将现有的传统应用迁移到 kubernetes 中比较关心。
改造一般涉及以下几个方面
首选需要将应用容器化,使用 Docker 定义一个包含安装步骤的 Dockerfile 文件,最后构建镜像。
使用 ConfigMap 来将配置和代码解耦, 在 Kubernetes 中通过 ConfigMap 资源将应用的配置文件加载到集群中。
kubernetes 提供两种方式将 ConfigMap 注入到应用程序。
12-Factor推荐将应用的配置存储于 环境变量 中( env vars, env )。环境变量可以非常方便地在不同的部署间做修改,却不动一行代码。 缺点:不支持热更新
12-Factor推荐将应用的配置存储于 环境变量 中( env vars, env )。环境变量可以非常方便地在不同的部署间做修改,却不动一行代码。
缺点:不支持热更新
apiVersion: v1 kind: ConfigMap metadata: name: app-config namespace: dev data: NODE_ENV: production DEV_MODE: "false" PORT: "3000" ENABLE_SWAGGER_UI: "true" --- apiVersion: v1 kind: Pod ... spec: containers: - name: app-container # 将 ConfigMap 中的所有键-值对配置为容器环境变量 envFrom: - configMapRef: name: app-config env: # 为容器定义环境变量 - name: ENV_NAME value: "ENV_VALUE" # 通过环境变量向容器公开Pod信息 - name: SPARK_DRIVER_HOST valueFrom: fieldRef: fieldPath: status.hostIP # 将 ConfigMap 中指定的键配置到环境变量中 - name: NODE_ENV valueFrom: configMapKeyRef: name: app-config key: NODE_ENV ...
用作 Pod 启动时挂载的 volume 优点:支持热更新
用作 Pod 启动时挂载的 volume
优点:支持热更新
挂载文件
比如项目不同目录下有两个配置文件需要挂载
apiVersion: v1 kind: Pod ... spec: containers: - name: app-container volumeMounts: - name: app-config-volume mountPath: /project/service/config.py subPath: config.py - name: app-config-volume mountPath: /project/deploy/supervisord.conf subPath: supervisord.conf volumes: - name: app-config-volume configMap: name: app-config ...
挂载目录
如果一个目录下的文件都是需要配置的,通过挂载整个目录的方式来实现
生成 configmap
kubectl create configmap hadoop-conf --from-file=conf/hadoop-conf
需要注意的是,挂载目录会抹掉目录下原有的文件
apiVersion: v1 kind: Pod ... spec: containers: - name: app-container volumeMounts: - name: hadoop-config-volume mountPath: /etc/hadoop/conf volumes: - name: hadoop-config-volume configMap: defaultMode: 0744 name: hadoop-conf ...
日志输出到 stdout 和 stderr
kubernets 容器集群对日志收集的解决方案详见: Kubernetes Log Analysis with Fluentd, Elasticsearch and Kibana
<自定义的访问方式名称>.<工作负载所在命名空间> (例如:redis-svc.default)
<自定义的访问方式名称>.<工作负载所在命名空间>.svc.cluster.local(例如:redis-svc.default.svc.cluster.local)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Overview
当前 kubernetes 盛行,相信大家对如何将现有的传统应用迁移到 kubernetes 中比较关心。
改造一般涉及以下几个方面
Containerize your application
首选需要将应用容器化,使用 Docker 定义一个包含安装步骤的 Dockerfile 文件,最后构建镜像。
Configuration files
使用 ConfigMap 来将配置和代码解耦, 在 Kubernetes 中通过 ConfigMap 资源将应用的配置文件加载到集群中。
kubernetes 提供两种方式将 ConfigMap 注入到应用程序。
Store config in the environment (The Twelve Factors)
Use config in volume
挂载文件
比如项目不同目录下有两个配置文件需要挂载
挂载目录
如果一个目录下的文件都是需要配置的,通过挂载整个目录的方式来实现
生成 configmap
需要注意的是,挂载目录会抹掉目录下原有的文件
Logs
kubernets 容器集群对日志收集的解决方案详见: Kubernetes Log Analysis with Fluentd, Elasticsearch and Kibana
Networking
<自定义的访问方式名称>.<工作负载所在命名空间> (例如:redis-svc.default)
<自定义的访问方式名称>.<工作负载所在命名空间>.svc.cluster.local(例如:redis-svc.default.svc.cluster.local)
Other
Reference
The text was updated successfully, but these errors were encountered: