服务帐户和Kubernetes中的上下文有什么区别?

时间:2019-05-26 22:17:04

标签: kubernetes

两者之间的实际区别是什么?我什么时候应该选择一个?

例如,如果我想授予项目中的开发人员访问权限,使其仅查看Pod的日志。似乎可以通过RoleBinding为服务帐户或上下文分配这些权限。

3 个答案:

答案 0 :(得分:0)

什么是服务帐户?

来自Docs

  

用户帐户适用于人类。服务帐户用于流程,   在豆荚中运行。

     

用户帐户旨在成为全球...服务   帐户已命名空间。

上下文

$ kubectl describe service traefik-ingress-service -n kube-system Name: traefik-ingress-service Namespace: kube-system Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"traefik-ingress-service","namespace":"kube-system"},"spec":{"port... Selector: k8s-app=traefik-ingress-lb Type: NodePort IP: 10.100.230.143 Port: web 80/TCP TargetPort: 80/TCP NodePort: web 32001/TCP Endpoints: 10.46.0.1:80 Port: admin 8080/TCP TargetPort: 8080/TCP NodePort: admin 30480/TCP Endpoints: 10.46.0.1:8080 Session Affinity: None External Traffic Policy: Cluster Events: <none> context文件(kubeconfig)相关。如您所知~/.kube/config文件是yaml文件,kubeconfig部分包含您的contextuser/token引用。 cluster非常有用,当您有多个集群时,可以在单个context文件中定义所有clusteruser,然后可以借助上下文(例如:kubeconfig

来自Docs

kubectl config --kubeconfig=config-demo use-context dev-frontend

您可以在上方看到3个上下文,其中包含apiVersion: v1 clusters: - cluster: certificate-authority: fake-ca-file server: https://1.2.3.4 name: development - cluster: insecure-skip-tls-verify: true server: https://5.6.7.8 name: scratch contexts: - context: cluster: development namespace: frontend user: developer name: dev-frontend - context: cluster: development namespace: storage user: developer name: dev-storage - context: cluster: scratch namespace: default user: experimenter name: exp-scratch current-context: "" kind: Config preferences: {} users: - name: developer user: client-certificate: fake-cert-file client-key: fake-key-file - name: experimenter user: password: some-password username: exp cluster的引用。

  

..如果我想授予项目中的开发人员访问权限,只需查看   吊舱的日志。似乎服务帐户或上下文都可能是   通过RoleBinding分配了这些权限。

正确,您需要创建userservice account(或Role),ClusterRole(或RoleBinding)并生成ClusterRoleBinding包含服务帐户kubeconfig的文件,并将其分配给您的开发人员。

我有一个script to generate kubconfig file,接受服务帐户名称参数。随时结帐

更新:

如果要创建tokenRole,则this might help

答案 1 :(得分:0)

它们是两个不同的概念。上下文很可能是指与kubectl配置有关的抽象,其中上下文可以与服务帐户关联。

出于某种原因,我认为context只是另一种身份验证方法。

答案 2 :(得分:-1)

服务帐户:服务帐户代表在pod中运行的流程的标识。通过服务帐户对进程进行身份验证后,它可以联系API服务器并访问群集资源。如果Pod没有分配的服务帐户,它将获得默认的服务帐户。

创建Pod时,如果未指定服务帐户,则会自动在同一名称空间中为其分配默认服务帐户,并且可以使用自动安装的服务帐户凭据从Pod内部访问API。

上下文:上下文只是一组访问参数,包含Kubernetes集群,用户和名称空间。

当前上下文是集群,当前是kubectl的默认集群,所有kubectl命令都针对该集群运行。