kubernets 容器隔离,restful api权限控制

在按官网安装kubernetes后,我的api配置如下 /opt/bin/kube-apiserver --insecure-bind-address=0.0.0.0 --insecure-port=8080 --etcd-servers=http://x.x.x.x:2379,http://x.x.x.x:2379,http://x.x.x.x:2379 --logtostderr=true --service-cluster-ip-range=10.254.0.0/16 --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,SecurityContextDeny --service-node-port-range=30000-32767 --advertise-address=x.x.x.x --client-ca-file=/srv/kubernetes/ca.crt --tls-cert-file=/srv/kubernetes/server.cert --tls-private-key-file=/srv/kubernetes/server.key 虽然配置了ca,但是我通过内部网的浏览器访问x.x.x.x:8080仍然能调用restful api 接口我想知道怎么能控制访问api接口的权限,因为如果用户知道了我apiserver地址,那么他从容器里面就可以直接调用api接口。同理他可以调用etcd地址,修改里面的数据,docker自身的api。怎么才能做到容器不能访问host主机的服务呢,还有apiserver的权限设置呢,看了半天的serveiceaccount仍然没有找到好的方法。
已邀请:

徐新坤 - 京东商城-TIG-JDOS团队

赞同来自: jxcdwangtao henryrao tonybai_cn

kube-api有secure的port,也有insecure的。这里之所以你的通过浏览器访问x.x.x.x:8080仍然能调用restful api,是因为你在启动kube-api时候设置了<strong>--insecure-bind-address=0.0.0.0</strong>。这里你可以不设置<strong>--insecure-bind-address</strong>,那么8080就会只监听127.0.0.1。则只有kube-api所在的机器才能通过本地进行访问。 如果要对外提供安全端口,则可以通过<strong>--bind_address=0.0.0.0 --secure-port=6443</strong>的设置,对外提供安全端口。此时调用api需要进行认证。

henryrao - 一個月內拿下k8s

有<strong>basic authentication</strong>可用`--basic-auth-file=/somewhere/basic.svc`,在<strong>kube-apiserver</strong>启动参数加入 范例 `/somewhere/basic.svc` >pass1,henry,usrid0 pass2,tim,usrid1 格式:密码,登入名,id 参考:(https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/admin/authentication.md), (https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/admin/kube-apiserver.md)

要回复问题请先登录注册