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时候设置了--insecure-bind-address=0.0.0.0。这里你可以不设置--insecure-bind-address,那么8080就会只监听127.0.0.1。则只有kube-api所在的机器才能通过本地进行访问。

如果要对外提供安全端口,则可以通过--bind_address=0.0.0.0 --secure-port=6443的设置,对外提供安全端口。此时调用api需要进行认证。

henryrao - 一個月內拿下k8s

赞同来自:


basic authentication可用--basic-auth-file=/somewhere/basic.svc,在kube-apiserver启动参数加入

范例 /somewhere/basic.svc


pass1,henry,usrid0
pass2,tim,usrid1
格式:密码,登入名,id

参考:认证, kube-apiserver

要回复问题请先登录注册