目录
【Rancher Server + Kubernets】- Nginx-ingress日志持久化至宿主机
本文主要是针对基于RancherServer搭建的Kubernets集群中,实现Nginx-ingress中的日志实现持久化,并保存至各Worker节点的目录。
- 如果要基于RancherServer搭建Kubernets集群请参照【Rancher Server + Kubernets搭建云原生集群平台】
一、环境准备
1、软件准备
序号 | 环境名称 | 说明 | 版本号 |
---|---|---|---|
1 | Rancher Server | k8s运维平台 | v2.5.7 |
2、环境规划
序号 | IP | HostName | 操作系统 | K8s角色 | 说明 |
---|---|---|---|---|---|
1 | 192.168.255.141 | rancher | Anolis OS 8.9 x86 64位 | Rancher服务 | Kubernetes 管理平台 |
2 | 192.168.255.142 | master | Anolis OS 8.9 x86 64位 | 控制节点 | Kubernetes Master |
3 | 192.168.255.143 | worker01 | Anolis OS 8.9 x86 64位 | 工作节点 | Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器 |
4 | 192.168.255.144 | worker02 | Anolis OS 8.9 x86 64位 | 工作节点 | Kubernetes Worker |
二、Nginx-ingress-controller服务日志持久化至宿主机目录配置
1、在宿主机创建日志挂载目录
(1)、创建日志挂载目录
在所有worker节点上执行下面命令
[root@worker01~]# mkdir /data/logs/nginx-ingress -p
(2)、确认运行容器的用户组
进入容器shell窗口
执行命令id,就会输出运行容器的用户及用户所在组的名称和id,如下图所示:用户和组名是:www-data,id:101
(3)、将目录挂载目录授权给nginx-ingress-controller容器内相同的用户组
通过上步可以得知运行容器【nginx-ingress-controller】的用户组信息
- 用户名:www-data, 用户ID:101
- 用户所属组:www-data, 组ID:101
本步骤非常关键,否则容器没有操作宿主机目录的权限
在所有worker节点操作系统中执行下面命令,本文方案中有两个work节点,分别是work01、work02
[root@worker01~]# groupadd -g 101 www-data
[root@worker01~]# useradd -u 101 -g 101 www-data
[root@worker01~]# chown -R 101:101 /data/nginx/logs
[root@worker01~]# chmod 755 /data/nginx/logs
2、配置nginx-ingress-controller服务
(1)、进入仪表盘
(2)、进入Daemonsets画面
只显示【ingress-nginx】命名空间
(2)、编辑【nginx-ingress-controller】的配置
(3)、编辑【nginx-ingress-controller】的配置
在【Container】->【Command】->Arguments添加日志配置
- –log_dir=/var/log/nginx/
- –logtostderr=false
- –ingress-class=nginx
完整配置内容如下
/nginx-ingress-controller --configmap=$(POD_NAMESPACE)/nginx-ingress-configuration --election-id=ingress-controller-leader --ingress-class=nginx --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services --udp-services-configmap=$(POD_NAMESPACE)/udp-services --annotations-prefix=nginx.ingress.kubernetes.io --log_dir=/var/log/nginx/ --logtostderr=false --ingress-class=nginx
添加【挂载目录】
(4)、编辑【nginx-ingress-configuration】ConfigMaps
3、验证
xshell连接至work01和work02节点后,在/data/nginx/logs目录下输出了nginx容器的日志了
至此,nginx-ingress中的日志就持久至各宿主机目录上了。