使用docker运行后访问kubernetes安全API

时间:2016-03-20 16:14:49

标签: kubernetes

我已经在我的Mac上用docker-machine创建了一个kubenetes集群,遵循以下文档:

http://kubernetes.io/docs/getting-started-guides/docker/

我可以在127.0.0.1:8080上从实例内部访问正常的api,但是我想从我的macbook外部访问它。我知道有一个安全端口:6443,但我不确定如何设置凭据来访问此端口。

关于如何在kubernetes的自定义安装上执行此操作有很多说明,但我不知道如何在我正在运行的docker容器中执行此操作。

2 个答案:

答案 0 :(得分:1)

可能您需要使用Virtual Box的port forwarding功能。文档中的一个例子:

function PopulateGrids(){
    var showInactive,showSubmitted;
    if($("#showInactive").is(':checked')){
        showInactive=true;
    }
    else if($("#showSubmitted").is(':checked')){
        showSubmitted=true;
    }
    else if($("#showSubmitted").is(':checked') && $("#showInactive").is(':checked'))
        {
        showInactive=true;
        showSubmitted=true;
        }


    jQuery.ajax( {
        async : false,
        cache : false,
        url : "/application/createNewResult/details?showInactive="+encodeURI(showInactive)+"&showSubmitted="+encodeURI(showSubmitted) ,
        type : 'GET',
        contentType: "application/json; charset=utf-8", 
        dataType : 'json',
        success : function() {
            alert("showInactive: "+showInactive+" show submitted: "+showSubmitted);
            console.log("info:",'<c:out value="${info}"/>');
            if(showInactive)
                $("#showInactive").prop('checked', true);
            else if(showSubmitted )
                $("#showSubmitted").prop('checked', true);          
        },
        complete : function(request, status) {
            if (status == undefined || status == "error" || status == "parsererror") {
                alert('error in searching Invalid or submitted records: '+status);
                window.location.href="/application/createNewResult/";
            } else if (status != 'success'){
                alert('error in searching Invalid or submitted records: '+status);

            }

        }
    });
}

这会将所有主机接口上的端口6443转发到guest虚拟机的端口6443。也可以通过VirtualBox UI配置端口转发。

答案 1 :(得分:0)

这就像是一种解决方法,但大部分时间,我认为KubeOnDocker设置适用于不需要凭据机制的开发人员:

当您启动KubeOnDocker时,--config=/etc/kubernetes/manifests指向master.json。如果您查看apiserver start命令,您会看到--insecure-bind-address是127.0.0.1。如果您使用--config=/etc/kubernetes/manifests-multi,它将指向master-multi.json--insecure-bind-address将为0.0.0.0,并且可以从任何地方访问该服务器。

请注意,您需要使用manifests-multi启动etcd。

# Not tested start
docker run \
  -d \
  --net=host \
  gcr.io/google_containers/etcd:2.2.1 \
    /usr/local/bin/etcd \
    --listen-client-urls=http://127.0.0.1:4001 \
    --advertise-client-urls=http://127.0.0.1:4001 \
    --data-dir=/var/etcd/data