当前位置:  开发笔记 > 编程语言 > 正文

将代码/文件直接注入Google Cloud Engine中Kubernetes的容器中

如何解决《将代码/文件直接注入GoogleCloudEngine中Kubernetes的容器中》经验,为你挑选了2个好方法。

如何将代码/文件直接插入到Google Cloud Engine中的Kubernetes容器中,类似于使用Docker挂载主机文件/目录的方式,例如

docker run -d --name nginx -p 443:443 -v "/nginx.ssl.conf:/etc/nginx/conf.d/default.conf"

谢谢



1> 小智..:

可以使用ConfigMaps来实现该目标:

以下示例将mariadb配置文件安装到mariadb POD中:

ConfigMap

apiVersion: v1
data:
  charset.cnf: |
    [client]
    # Default is Latin1, if you need UTF-8 set this (also in server section)
    default-character-set = utf8 

    [mysqld]
    #
    # * Character sets
    #
    # Default is Latin1, if you need UTF-8 set all this (also in client section)
    #
    character-set-server  = utf8 
    collation-server      = utf8_unicode_ci 

kind: ConfigMap
metadata:
  name: mariadb-configmap

MariaDB部署

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mariadb
  labels:
    app: mariadb  
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: mariadb
        version: 10.1.16
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.1.16
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mariadb
              key: rootpassword
        volumeMounts:
        - name: mariadb-data
          mountPath: /var/lib/mysql
        - name: mariadb-config-file
          mountPath: /etc/mysql/conf.d   
      volumes:
      - name: mariadb-data
        hostPath: 
          path: /var/lib/data/mariadb
      - name: mariadb-config-file
        configMap:
          name: mariadb-configmap

也可以使用子路径的功能,为1.3版本kubernetes可用,说明这里.



2> rwilson04..:

我不确定你能做到这一点.Kubernetes的工作方式与docker完全不同,并且不太适合与您可能习惯使用docker的'host'进行交互.

我想到了一些可能的可能性.首先,可能最不理想但最接近你要求的是在容器运行后添加文件,方法是添加commands或删除argspod规范,或者使用kubectl exec内容并将内容回送到文件中.第二种方法是创建一个已存在该文件的卷,例如创建GCE或EBS磁盘,添加该文件,然后将文件位置(只读)挂载到容器的规范中.第三,将创建一个新的docker镜像,其中该文件或其他代码已经存在.

对于第一个选项,kubectl exec它将用于一次性作业,它不是非常可扩展/可重复的.在运行时进行的任何创建/获取都会为容器的开始时间增加很多开销,所以我通常会使用第三个选项,每当文件或代码发生更改时都会构建一个新的docker镜像.你改变的越多,你就越想要一个CI系统(如无人机)来帮助自动化这个过程.

如果我应该扩展任何这些选项以及更多详细信息,请添加评论.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有