2017-10-08 12 views
0

私はホストとしてRancherOSを使用しており、設定しようとしていますkubectl container。私はイメージを修正して、kubectlのバージョンを最新のもの(1.8.0)に変更し、DockerファイルがなければDockerビルドがapkコマンドを実行できなかったため、Dockerfileにプロキシ設定を追加しました。また、KubernetesはRancherサーバーによって管理されています。 Rancher UIからkubectl CLI設定をダウンロードしました。それは以下の通りです:kubectlコンテナがKubernetesに接続できません

apiVersion: v1 
kind: Config 
clusters: 
- cluster: 
    api-version: v1 
    server: "https://rancher.dev.abc.net/r/projects/1a6842/kubernetes:6443" 
    name: "test" 
contexts: 
- context: 
    cluster: "test" 
    user: "test" 
    name: "test" 
current-context: "test" 
users: 
- name: "test" 
    user: 
    token: "QmFzaWMgTnpV9UZ3hPVVV4TXpaRFJrSTFSRFpDTkNOa2hSUTNscGNsSXpjMXAxVUdacVZUWk9NWFZaYVVGd1NqUk5UazVDUkZSM1lWZFhUZz09" 

Dockerfile:

FROM docker.artifactory.abc.net/alpine:3.6 

# Required for apk to install openssl 
ENV http_proxy='http://proxy.abc.net:8080' \ 
    https_proxy='http://proxy.abc.net:8080' \ 
    no_proxy='localhost,abc.net' 

ADD https://storage.googleapis.com/kubernetes-release/release/v1.8.0/bin/linux/amd64/kubectl /usr/local/bin/kubectl 

ENV HOME=/config 

RUN set -x && \ 
    apk add --no-cache curl ca-certificates && \ 
    chmod +x /usr/local/bin/kubectl && \ 
    \ 
    # Create non-root user (with a randomly chosen UID/GUI). 
    adduser kubectl -Du 2342 -h /config && \ 
    \ 
    # Basic check it works. 
    kubectl version --client 

USER kubectl 

ENTRYPOINT ["/usr/local/bin/kubectl"] 

もDockerfileではなく無駄に以下を追加してみました。今

COPY .kube/chain.pem /config/.kube/ca.crt 
RUN cat /config/.kube/ca.crt 

私はコマンドを実行し、

$ docker run --rm --user $UID -v ~rancher/kubectl/.kube:/config/.kube kubectl:v1.8.0 version 
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"} 
Unable to connect to the server: x509: certificate signed by unknown authority 

上で見たように、クライアントのバージョンが細かい表示されますが、サーバーに接続している間、それは失敗します。 ~rancher/kubectl/.kubeディレクトリにca.crtファイルをコピーしました。また、ファイルの名前をca.pemに変更しようとしましたが、動作しません。 kubectlがcrtファイルを取得できるように、どのパラメータを指定する必要があるのか​​不明です。

答えて

0

だから私はついにそれを働かせました。 Dockerfileに変更はありません。上に示した.kube/configファイルでは、私はちょうど次のエントリを追加する必要がありました:以下に示すように

certificate-authority: /config/.kube/ca.crt 

ので.kube/configファイルが今になります

apiVersion: v1 
kind: Config 
clusters: 
- cluster: 
    api-version: v1 
    certificate-authority: /config/.kube/ca.crt 
    server: "https://rancher.dev.abc.net/r/projects/1a6842/kubernetes:6443" 
    name: "test" 
contexts: 
- context: 
    cluster: "test" 
    user: "test" 
    name: "test" 
current-context: "test" 
users: 
- name: "test" 
    user: 
    token: "QmFzaWMgTnpV9UZ3hPVVV4TXpaRFJrSTFSRFpDTkNOa2hSUTNscGNsSXpjMXAxVUdacVZUWk9NWFZaYVVGd1NqUk5UazVDUkZSM1lWZFhUZz09" 

最後に、私は、サーバーのバージョンを見ることができました。 Phew ...

$ docker run --rm --user $UID -v ~rancher/kubectl/.kube:/config/.kube kubectl:v1.8.0 version 
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"} 
Server Version: version.Info{Major:"1", Minor:"7+", GitVersion:"v1.7.2-rancher1", GitCommit:"eda266858c448156b6d6fee372ff43ffb458a70c", GitTreeState:"clean", BuildDate:"2017-08-03T17:22:27Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"} 
関連する問題