Technology

RBAC给默认服务账号default赋予namespace级别权限

给默认的服务账号service account: default赋予当前namespace的最高权限, 但是仅有这些权限.创建namespace之后, 里面会自带一个默认的service account, 名字是default. 它是没有任何权限的.Error from server (Forbidden): pods is forbidden: User system:serviceaccount:test-namespace:default cannot list resource pods in API group in the namespace default Error from server (Forbidden): storageclasses.storage.k8s.io is forbidden: User system:serviceaccount:test-namespace:default cannot list resource storageclasses in API group storage.k8s.io at the cluster scope

国内网络环境安装Istio Ambient

这篇文章的主要目的是解决国内安装istio ambient速度比较慢、甚至是失败的问题. 因为国内防火墙的原因, 有些资源是拉不到或者速度很慢的.

安装之前需要有一套kubernetes集群, 集群的版本为1.28, 1.29, 1.30, 1.31

下载Istio CLI #

截止目前最新的Istio稳定版本为: 1.24.2, 我们今天就安装它. Istio通过istioctl来配置/安装的. 现在我们需要下载它, 以及一些样例应用:

1
2
3
4
# 目前只支持1.24.2版本
curl -L https://blog.llaoj.cn/posts/2025/install-istio-ambient/download-istio.sh | bash -s -- 1.24.2
cd istio-1.24.2
export PATH=$PWD/bin:$PATH

使用下面的命令检查一下版本, 现在Istio还没有安装:

...

解决kubernetes中pod连接外部Redis速度慢的问题

问题描述 #

用户反应, 在kubernetes中部署的pod去访问外部的redis时, 速度很慢.
redis地址: 10.193.96.73:20100,10.193.96.73:20101,10.193.96.188:20100,10.193.96.188:20101,10.193.96.189:20100,10.193.96.189:20101

已知:

  • pod ip: 10.194.43.122
  • pod所在机器ip: 10.193.40.57

tcpdump抓包 #

我们选择一个redis端点(10.193.96.188:20101)抓包, 登录pod所在node(10.193.40.57)执行抓包:

tcpdump -n -i eth0 'host 10.193.96.188 and port 20101'

...

安装高可用ETCD集群(非https)

安装1个etcd集群要求:

  • 三台服务器
  • 开启auth认证
  • 使用http, 不使用https加密
  • 开启用户名/密码认证

因为我们部署的是内部的可信的服务, 而且只局限在三台服务器中使用, 给apisix做存储使用. 为了简化部署, 减少管理证书的复杂性. 我没有开启https.

服务器情况 #

服务器三台, IP地址分别为: 10.61.129.19-21. centos7.9的操作系统.

本节需要在每一台服务器上执行 #

部署可执行文件 #

将etcd安装在/data/etcd/目录中.

...

在虚拟机上安装APISIX集群

我们会在下面三台服务器上部署, 服务器列表:

  • 10.61.129.19
  • 10.61.129.20
  • 10.61.129.21

下面的所有操作需要在上述三台服务器上操作.

前置条件-ETCD集群 #

参考 安装高可用ETCD集群(非https)完成etcd集群的安装.

安装apisix可执行文件 #

我们使用官方提供的rpm包安装.

1
2
yum install -y https://repos.apiseven.com/packages/centos/apache-apisix-repo-1.0-1.noarch.rpm
yum install apisix-3.2.0 -y

安装完成之后, 我们要知道安装的位置, 一些常用的文件夹地址.

...

解决Harbor漏洞扫描trivy失败

点击查看日志, 错误日志如下:[/pkg/scan/job.go:294]: check scan report with mime type application/vnd.security.vulnerability.report; version=1.1: running trivy wrapper: running trivy: exit status 2: 2025-01-08T01:53:26.342Z [INFO] Vulnerability scanning is enabled panic: invalid page type: 39: 10 go.etcd.io/bbolt.(*Cursor).search 看日志中的错误堆栈, 我发现在读取trivy数据库文件的时候报错了, 所以我的解决办法是, 删掉原来的数据库文件, 让trivy重建一个. 我把Harbor的数据目录放在了/data/harbor_data, 你可根据自己的实际情况替换.

解决执行kubectl命令没有权限

问题描述 #

反应执行kubectl命令没有权限:

1
2
$ kubectl get pod -A
Error from server (Forbidden): pods is forbidden: User "kubernetes-admin" cannot list resource "pods" in API group "" at the cluster scope

解决思路 #

首先要了解几个文件夹的作用:

...