前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 无法查看 pods 日志问题

Kubernetes 无法查看 pods 日志问题

作者头像
YP小站
发布2020-06-04 16:25:30
2.1K0
发布2020-06-04 16:25:30
举报
文章被收录于专栏:YP小站YP小站YP小站

前言

最近使用二进制部署完 Kubernetes 1.18.2 版本,运行命令 kubectl logs -n kube-system calico-node-mbjnm 时,报下面错误。

原因:我们知道 Kubernetes 认证过程分为:认证 --> 授权 --> 准入控制,上面报错就是因为没有通过认证而被拒绝。

认证被拒绝解决方法

错误的解决方法

通过谷歌搜索时,发现很多博客文章使用下面方法来解决上面报错。修改 kubelet.config 配置,添加下面配置,开启匿名访问。问题虽然可以解决,但危害整个集群安全。所以作者不推荐这样操作。

authentication:
  anonymous:
    enabled: true

正确的解决方法

从上图官方文档中我们能得出结论:

  • kube-apiserver 配置需要添加 --kubelet-client-certificate--kubelet-client-key 参数,具体配置如下:
  • kubelet 配置需要添加 --client-ca-file 参数,并且为了集群安全,需要禁用匿名访问 --anonymous-auth=false,具体配置如下:

修改完 kube-apiserverkubelet 配置,并重启 kube-apiserver 和 kubelet 服务,再次运行 kubectl logs -n kube-system calico-node-mbjnm 命令查看 Pod 日志,发现又报错了。具体见下图:

分析:从上图我们可以知道,Kubernetes 认证已经通过,但到授权时出现问题,因为没有查看 Pods 日志权限。

参考官方链接:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/

没有授权解决方法

错误的解决方法

system:anonymous 绑定到 cluster-admin 角色中并起一个 cluster-system:anonymous 名字。

$ kubectl create clusterrolebinding cluster-system:anonymous --clusterrole=cluster-admin --user=system:anonymous

clusterrolebinding.rbac.authorization.k8s.io/cluster-system:anonymous created

上面的解决方法,会严重危害集群安全,匿名访问拥有超级管理员权限,想想有多可怕。。。

正确的解决方法

注意:作者生成证书时使用 kubernetes 用户

解决思路:从报错可以知道,kubernetes 用户 没有查看 Pods 日志权限,我们可以给 kubernetes 用户 绑定一个权限。

Kubernetes 集群默认提供一个 system:kubelet-api-admin 权限。

解决方法:把 kubernetes 用户 绑定到 system:kubelet-api-admin 权限。具体如下操作:

$ vim apiserver-to-kubelet-rbac.yml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubelet-api-admin
subjects:
- kind: User
  name: kubernetes
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: system:kubelet-api-admin
  apiGroup: rbac.authorization.k8s.io
$ kubectl apply -f apiserver-to-kubelet-rbac.yml

再次查看 Pod 日志,能正常输出日志了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 YP小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 认证被拒绝解决方法
    • 错误的解决方法
      • 正确的解决方法
      • 没有授权解决方法
        • 错误的解决方法
          • 正确的解决方法
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档