在Kubernetes中传递Docker容器的运行参数

我有两个在RancherOS v1.0.3上运行的容器(GitLab和PostgreSQL)。 我想让他们成为Kubernetes集群的一部分。

[rancher@rancher-agent-1 ~]$ cat postgresql.sh docker run --name gitlab-postgresql -d \ --env 'POSTGRES_DB=gitlabhq_production' \ --env 'POSTGRES_USER=gitlab' --env 'POSTGRES_PASSWORD=password' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ postgres:9.6-2 [rancher@rancher-agent-1 ~]$ cat gitlab.sh docker run --name gitlab -d \ --link gitlab-postgresql:postgresql \ --publish 443:443 --publish 80:80 \ --env 'GITLAB_PORT=80' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=64-char-key-A' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=64-char-key-B' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=64-char-key-C' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:9.4.5 

查询:
1)我有一些关于如何使用YAML文件来configuration荚,复制控制器等的想法,但我不知道如何将上述docker runparameter passing给Kubernetes,以便它可以正确地应用于图像(S)。

2)我不确定是否需要在Kubernetes中传递--link参数(在上面的--link使用)。 虽然我目前在单个主机上部署两个容器,但是稍后将创build每个(PostgreSQL和GitLab)的集群,所以只是想确认Kubernetes是否会自动处理主机间通信。 如果没有,那么可以探索哪些select?

您应该首先尝试将运行语句表示为docker-compose.yml文件。 这很容易,它会变成如下所示

 version: '3' services: postgresql: image: postgres:9.6-2 environment: - "POSTGRES_DB=gitlabhq_production" - "POSTGRES_USER=gitlab" - "POSTGRES_PASSWORD=password" volumes: - /srv/docker/gitlab/postgresql:/var/lib/postgresql gitlab: image: sameersbn/gitlab:9.4.5 ports: - "443:443" - "80:80" environment: - "GITLAB_PORT=80" - "GITLAB_SSH_PORT=10022" - "GITLAB_SECRETS_DB_KEY_BASE=64-char-key-A" - "GITLAB_SECRETS_SECRET_KEY_BASE=64-char-key-B" - "GITLAB_SECRETS_OTP_KEY_BASE=64-char-key-C" volumes: - /srv/docker/gitlab/gitlab:/home/git/data 

现在有一个来自kompose.io的令人惊叹的工具名称kompose ,它为您完成转换部分。 如果你转换上面,你会得到相关的文件

 $ kompose convert -f docker-compose.yml WARN Volume mount on the host "/srv/docker/gitlab/gitlab" isn't supported - ignoring path on the host WARN Volume mount on the host "/srv/docker/gitlab/postgresql" isn't supported - ignoring path on the host INFO Kubernetes file "gitlab-service.yaml" created INFO Kubernetes file "postgresql-service.yaml" created INFO Kubernetes file "gitlab-deployment.yaml" created INFO Kubernetes file "gitlab-claim0-persistentvolumeclaim.yaml" created INFO Kubernetes file "postgresql-deployment.yaml" created INFO Kubernetes file "postgresql-claim0-persistentvolumeclaim.yaml" created 

现在,您必须按照kubernetes修复卷装部件。 这完成了80%的工作,你只需要找出其余的20%

这里是所有生成文件的一个小猫,所以你可以看到什么样的文件生成

 ==> gitlab-claim0-persistentvolumeclaim.yaml <== apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: gitlab-claim0 name: gitlab-claim0 spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Mi status: {} ==> gitlab-deployment.yaml <== apiVersion: extensions/v1beta1 kind: Deployment metadata: creationTimestamp: null labels: io.kompose.service: gitlab name: gitlab spec: replicas: 1 strategy: type: Recreate template: metadata: creationTimestamp: null labels: io.kompose.service: gitlab spec: containers: - env: - name: GITLAB_PORT value: "80" - name: GITLAB_SECRETS_DB_KEY_BASE value: 64-char-key-A - name: GITLAB_SECRETS_OTP_KEY_BASE value: 64-char-key-C - name: GITLAB_SECRETS_SECRET_KEY_BASE value: 64-char-key-B - name: GITLAB_SSH_PORT value: "10022" image: sameersbn/gitlab:9.4.5 name: gitlab ports: - containerPort: 443 - containerPort: 80 resources: {} volumeMounts: - mountPath: /home/git/data name: gitlab-claim0 restartPolicy: Always volumes: - name: gitlab-claim0 persistentVolumeClaim: claimName: gitlab-claim0 status: {} ==> gitlab-service.yaml <== apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: io.kompose.service: gitlab name: gitlab spec: ports: - name: "443" port: 443 targetPort: 443 - name: "80" port: 80 targetPort: 80 selector: io.kompose.service: gitlab status: loadBalancer: {} ==> postgresql-claim0-persistentvolumeclaim.yaml <== apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null labels: io.kompose.service: postgresql-claim0 name: postgresql-claim0 spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Mi status: {} ==> postgresql-deployment.yaml <== apiVersion: extensions/v1beta1 kind: Deployment metadata: creationTimestamp: null labels: io.kompose.service: postgresql name: postgresql spec: replicas: 1 strategy: type: Recreate template: metadata: creationTimestamp: null labels: io.kompose.service: postgresql spec: containers: - env: - name: POSTGRES_DB value: gitlabhq_production - name: POSTGRES_PASSWORD value: password - name: POSTGRES_USER value: gitlab image: postgres:9.6-2 name: postgresql resources: {} volumeMounts: - mountPath: /var/lib/postgresql name: postgresql-claim0 restartPolicy: Always volumes: - name: postgresql-claim0 persistentVolumeClaim: claimName: postgresql-claim0 status: {} ==> postgresql-service.yaml <== apiVersion: v1 kind: Service metadata: creationTimestamp: null labels: io.kompose.service: postgresql name: postgresql spec: clusterIP: None ports: - name: headless port: 55555 targetPort: 0 selector: io.kompose.service: postgresql status: loadBalancer: {}