2017-10-16 199 views
1

我目前正在嘗試爲Gitlab CI使用Kubernetes集羣。 在遵循不太好的文檔(https://docs.gitlab.com/runner/install/kubernetes.html)時,我所做的是手動向Gitlab CI部分中的令牌註冊runner,以便我可以獲得另一個令牌並將其用於我用於部署的ConfigMap中。在Kubernetes上運行Gitlab CI亞軍時的待定狀態

-ConfigMap

apiVersion: v1 
kind: ConfigMap 
metadata: 
    name: gitlab-runner 
    namespace: gitlab 
data: 
    config.toml: | 
    concurrent = 4 
    [[runners]] 
     name = "Kubernetes Runner" 
     url = "https://url/ci" 
     token = "TOKEN" 
     executor = "kubernetes" 
     [runners.kubernetes] 
      namespace = "gitlab" 

-Deployment

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: gitlab-runner 
    namespace: gitlab 
spec: 
    replicas: 4 
    selector: 
    matchLabels: 
     name: gitlab-runner 
    template: 
    metadata: 
     labels: 
     name: gitlab-runner 
    spec: 
     containers: 
     - args: 
     - run 
     image: gitlab/gitlab-runner:latest 
     imagePullPolicy: Always 
     name: gitlab-runner 
     volumeMounts: 
     - mountPath: /etc/gitlab-runner 
      name: config 
     restartPolicy: Always 
     volumes: 
     - configMap: 
      name: gitlab-runner 
     name: config 

有了這兩個我能看到在Gitlab亞軍段亞軍,但每當我開始工作,新創建的豆莢留在待定狀態。

我想修復它,但我所知道的是,節點和豆莢得到這些事件:

-Pods:

Events: 
  FirstSeen     LastSeen        Count   From                    SubObjectPath   Type            Reason                  Message 
  ---------     --------        -----   ----                    -------------   --------        ------                  ------- 
  35s           4s              7       {default-scheduler }                    Warning         FailedScheduling        No nodes are available that match all of the following predicates:: MatchNodeSelector (2). 

-nodes:

Events: 
  FirstSeen     LastSeen        Count   From                                            SubObjectPath   Type            Reason                                  Message 
  ---------     --------        -----   ----                                            -------------   --------        ------                                  ------- 
  4d            31s             6887    {kubelet gitlab-ci-hc6k3ffax54o-master-0}                       Warning         FailedNodeAllocatableEnforcement        Failed to update Node Allocatable Limits "": failed to set supported cgroup subsystems for cgroup : Failed to set config for supported subsystems : failed to write 3783761920 to memory.limit_in_bytes: write /rootfs/sys/fs/cgroup/memory/memory.limit_in_bytes: invalid argument  

任何爲什麼會發生這種想法?

編輯:kubectl描述了補充:

Name:   runner-45384765-project-1570-concurrent-00mb7r 
Namespace:  gitlab 
Node:   /
Labels:   <none> 
Status:   Pending 
IP: 
Controllers: <none> 
Containers: 
    build: 
    Image:  blablabla:latest 
    Port: 
    Command: 
     sh 
     -c 
     if [ -x /usr/local/bin/bash ]; then 
     exec /usr/local/bin/bash 
elif [ -x /usr/bin/bash ]; then 
     exec /usr/bin/bash 
elif [ -x /bin/bash ]; then 
     exec /bin/bash 
elif [ -x /usr/local/bin/sh ]; then 
     exec /usr/local/bin/sh 
elif [ -x /usr/bin/sh ]; then 
     exec /usr/bin/sh 
elif [ -x /bin/sh ]; then 
     exec /bin/sh 
else 
     echo shell not found 
     exit 1 
fi 


    Volume Mounts: 
     /var/run/secrets/kubernetes.io/serviceaccount from default-token-1qm5n (ro) 
     /vcs from repo (rw) 
    Environment Variables: 
     CI_PROJECT_DIR:   blablabla 
     CI_SERVER:    yes 
     CI_SERVER_TLS_CA_FILE: -----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 

     CI:      true 
     GITLAB_CI:    true 
     CI_SERVER_NAME:   GitLab 
     CI_SERVER_VERSION:  9.5.5-ee 
     CI_SERVER_REVISION:  cfe2d5c 
     CI_JOB_ID:    5625 
     CI_JOB_NAME:    pylint 
     CI_JOB_STAGE:    build 
     CI_COMMIT_SHA:   ece31293f8eeb3a36a8585b79d4d21e0ebe8008f 
     CI_COMMIT_REF_NAME:  master 
     CI_COMMIT_REF_SLUG:  master 
     CI_REGISTRY_USER:   gitlab-ci-token 
     CI_BUILD_ID:    5625 
     CI_BUILD_REF:    ece31293f8eeb3a36a8585b79d4d21e0ebe8008f 
     CI_BUILD_BEFORE_SHA:  ece31293f8eeb3a36a8585b79d4d21e0ebe8008f 
     CI_BUILD_REF_NAME:  master 
     CI_BUILD_REF_SLUG:  master 
     CI_BUILD_NAME:   pylint 
     CI_BUILD_STAGE:   build 
     CI_PROJECT_ID:   1570 
     CI_PROJECT_NAME:   blablabla 
     CI_PROJECT_PATH:   blablabla 
     CI_PROJECT_PATH_SLUG:  blablabla 
     CI_PROJECT_NAMESPACE:  vcs 
     CI_PROJECT_URL:   https://blablabla 
     CI_PIPELINE_ID:   2574 
     CI_CONFIG_PATH:   .gitlab-ci.yml 
     CI_PIPELINE_SOURCE:  push 
     CI_RUNNER_ID:    111 
     CI_RUNNER_DESCRIPTION: testing on kubernetes 
     CI_RUNNER_TAGS:   docker-image-build 
     CI_REGISTRY:    blablabla 
     CI_REGISTRY_IMAGE:  blablabla 
     PYLINTHOME:    ./pylint-home 
     GITLAB_USER_ID:   2277 
     GITLAB_USER_EMAIL:  blablabla 
    helper: 
    Image:  gitlab/gitlab-runner-helper:x86_64-a9a76a50 
    Port: 
    Command: 
     sh 
     -c 
     if [ -x /usr/local/bin/bash ]; then 
     exec /usr/local/bin/bash 
elif [ -x /usr/bin/bash ]; then 
     exec /usr/bin/bash 
elif [ -x /bin/bash ]; then 
     exec /bin/bash 
elif [ -x /usr/local/bin/sh ]; then 
     exec /usr/local/bin/sh 
elif [ -x /usr/bin/sh ]; then 
     exec /usr/bin/sh 
elif [ -x /bin/sh ]; then 
     exec /bin/sh 
else 
     echo shell not found 
     exit 1 
fi 


    Volume Mounts: 
     /var/run/secrets/kubernetes.io/serviceaccount from default-token-1qm5n (ro) 
     /vcs from repo (rw) 
    Environment Variables: 
     CI_PROJECT_DIR:   blablabla 
     CI_SERVER:    yes 
     CI_SERVER_TLS_CA_FILE: -----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
blablabla 
-----END CERTIFICATE----- 

     CI:      true 
     GITLAB_CI:    true 
     CI_SERVER_NAME:   GitLab 
     CI_SERVER_VERSION:  9.5.5-ee 
     CI_SERVER_REVISION:  cfe2d5c 
     CI_JOB_ID:    5625 
     CI_JOB_NAME:    pylint 
     CI_JOB_STAGE:    build 
     CI_COMMIT_SHA:   ece31293f8eeb3a36a8585b79d4d21e0ebe8008f 
     CI_COMMIT_REF_NAME:  master 
     CI_COMMIT_REF_SLUG:  master 
     CI_REGISTRY_USER:   gitlab-ci-token 
     CI_BUILD_ID:    5625 
     CI_BUILD_REF:    ece31293f8eeb3a36a8585b79d4d21e0ebe8008f 
     CI_BUILD_BEFORE_SHA:  ece31293f8eeb3a36a8585b79d4d21e0ebe8008f 
     CI_BUILD_REF_NAME:  master 
     CI_BUILD_REF_SLUG:  master 
     CI_BUILD_NAME:   pylint 
     CI_BUILD_STAGE:   build 
     CI_PROJECT_ID:   1570 
     CI_PROJECT_NAME:   blablabla 
     CI_PROJECT_PATH:   blablabla 
     CI_PROJECT_PATH_SLUG:  blablabla 
     CI_PROJECT_NAMESPACE:  vcs 
     CI_PROJECT_URL:   blablabla 
     CI_PIPELINE_ID:   2574 
     CI_CONFIG_PATH:   .gitlab-ci.yml 
     CI_PIPELINE_SOURCE:  push 
     CI_RUNNER_ID:    111 
     CI_RUNNER_DESCRIPTION: testing on kubernetes 
     CI_RUNNER_TAGS:   docker-image-build 
     CI_REGISTRY:    blablabla 
     CI_REGISTRY_IMAGE:  blablabla 
     PYLINTHOME:    ./pylint-home 
     GITLAB_USER_ID:   2277 
     GITLAB_USER_EMAIL:  blablabla 
Conditions: 
    Type   Status 
    PodScheduled False 
Volumes: 
    repo: 
    Type:  EmptyDir (a temporary directory that shares a pod's lifetime) 
    Medium: 
    default-token-1qm5n: 
    Type:  Secret (a volume populated by a Secret) 
    SecretName: default-token-1qm5n 
QoS Class:  BestEffort 
Tolerations: <none> 
Events: 
    FirstSeen  LastSeen  Count From     SubObjectPath Type   Reason     Message 
    ---------  --------  ----- ----     ------------- --------  ------     ------- 
    39s   8s    7  {default-scheduler }     Warning   FailedScheduling  No nodes are available that match all of the following predicates:: MatchNodeSelector (2). 
+1

請問您可以爲掛起的pod添加'kube describe''(部署是否存在)? 您使用哪個K8s版本? – adebasi

回答

0

因爲:

selector: 
    matchLabels: 
     name: gitlab-runner 

沒有吊艙能夠檢索與該標籤的工作。

刪除選擇器就足夠了,不需要它。