Technology

仅缓存的Bind的安装和使用

安装配置 #

在CentOS上安装:

1
2
3
4
5
6
7
$ yum install bind bind-utils -y
# 查看安装的版本
$ named -v
BIND 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 (Extended Support Version) <id:7107deb>
# 开机自启动
$ systemctl enable named
$ systemctl start named

Bind安装完之后, 默认就是一个仅缓存的nameserver. 可以作为一个本地的DNS解析器来使用.
Bind在我们的架构中也正是扮演这样的角色.
在CentOS上安装完成之后, 默认的配置文件需要修改的不多:

...

使用nginx代理harbor并开启ipv4&ipv6双栈

需求 #

使用代理服务器部署nginx服务, 代理到harbor所在到服务器上. 用nginx代理harbor. 用户通过nginx服务器的地址访问harbor. 同时, 开通ipv4和ipv6双栈.

思路 #

  1. 服务器支持双栈: 首先确保涉及的服务器都支持双栈
  2. 应用层支持双栈之docker, 因为我们的服务都是跑在docker上的. 所以要配置docker支持双栈. 具体方法参考: https://docs.docker.com/engine/daemon/ipv6/
  3. 应用层支持双栈之harbor, 配置harbor支持双栈.
  4. 应用层支持双栈之nginx, 这篇文章会详细说.

这篇文章会详细说明第4部的操作方法.

实现方法 #

我们使用docker启动nginx实例:

...

借助阿里云智能DNS旗舰版+Bind9实现精细化的就近解析

借助云解析的自定义线路的能力实现根据给定网段/IP地址来判断解析的线路,返回特定记录值。每个数据中心部署2台Bind9服务器,仅作为本地的DNS缓存使用,设计2台服务器是为了实现高可用。在云解析服务处通过配置自定义线路的方式,同一个域名(例如oa.example.com)就可以根据不同数据中心的代理服务器的出口IP地址来判断解析的线路返回该区域/数据中心的地址。

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

解决思路 #

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

...