kubectl -proxy
을 실행하지 않고 Kubernetes API에 직접 액세스하려고합니다. 하지만이 serviceaccount 기본의 토큰을 사용할 때, 나는 심지어이 serviceaccount에 대한 ClusterRole 및 ClusterRoleBinding을 만든 후 403 를 얻을 수는 요청이 403kubectl이없는 Kubernetes API에 액세스
이 같은 외모를 적용 구성으로 거부 :
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pod-reader
subjects:
- kind: ServiceAccount
name: default
namespace: default
roleRef:
kind: ClusterRole
name: pod-reader
apiGroup: rbac.authorization.k8s.io
내가 설정을 적용 컬를 통해 포드에 액세스하려고 그런
(그것은는 Kubernetes 이오에, 그냥 주제 ServiceAccount을 사용 포드에 자원을 변경 한 문서에서 거의 하나입니다) :
$ kubectl apply -f secrets.yaml
clusterrole "pod-reader" created
clusterrolebinding "pod-reader" created
$ curl https://192.168.1.31:6443/v1/api/namespaces/default/pods --header "Authorization: Bearer $TOKEN" --insecure
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "forbidden: User \"system:serviceaccount:default:default\" cannot get path \"/v1/api/namespaces/default/pods\"",
"reason": "Forbidden",
"details": {
},
"code": 403
}
요청이 serviceaccount 기본값 : default에서 오는 것으로 정확하게 식별 된 것처럼 보이기 때문에 오류 메시지가 인증 부분을 확인했다고 생각합니다. 그러나이 (또는 다른 서비스 계정)이 포드 또는 노드에 대한 정보에 액세스 할 수있게하려면 어떻게해야합니까?
포드 외부에서 curl을 호출 할 때이 오류가 표시됩니다. 예를 들어 - kubernetes java 클라이언트를 사용하여/var/run/secrets 아래에 마운트 된 비밀 번호를 사용하여 포드 내에서 API에 액세스 할 수도 있습니다.
저는 K8 초보자입니다. 어리석은 질문 인 경우 용서해주세요.
구성 : 하나의 마스터와 2 개의 작업자 노드가있는 Raspberry Pis 클러스터에서 K8 1.8을 실행했습니다. kubeadm init에 많은 것을 전달하지 않았으므로 기본 구성을 가지고 있어야합니다. FWIW의 kubectl가 apiserver위한 쇼에게이 명령을 설명합니다
kube-apiserver
--requestheader-group-headers=X-Remote-Group
--service-account-key-file=/etc/kubernetes/pki/sa.pub
--admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota
--secure-port=6443
--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
--advertise-address=192.168.1.31
--service-cluster-ip-range=10.96.0.0/12
--tls-cert-file=/etc/kubernetes/pki/apiserver.crt
--tls-private-key-file=/etc/kubernetes/pki/apiserver.key
--kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
--kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
--enable-bootstrap-token-auth=true
--requestheader-username-headers=X-Remote-User
--allow-privileged=true
--kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-allowed-names=front-proxy-client
--client-ca-file=/etc/kubernetes/pki/ca.crt
--insecure-port=0
--authorization-mode=Node,RBAC
--etcd-servers=http://127.0.0.1:2379
감사합니다. 나 바보 야 ... –