使用rancher2.6.5查看 Pod 日志时显示空白问题,我们可以通过api删除用户的日志范围首选项来解决日志不能查看问题。因为我使用的环境是离线环境,无法连接外部网络,因此我写了一个python脚本来解决此问题。这个脚本同样也适用有网络的环境.
import argparse
import loguru
import requests
class rancherLogProcess(object):
def __init__(self, ip, username, password, user_id):
self.ip = ip
self.username = username
self.password = password
self.host = f"https://{self.ip}"
self.login_url = f"{self.host}/v3-public/localProviders/local?action=login"
self.log_url = f"{self.host}/v1/userpreferences/{user_id}"
self.session = requests.Session()
def main(self):
data = {
"description": "UI session",
"responseType": "cookie",
"username": self.username,
"password": self.password,
}
res = self.session.post(self.login_url, json=data, verify=False)
if res.status_code == 200:
loguru.logger.info(res.content)
header = {"Accept": "application/json"}
l_res = self.session.delete(self.log_url, verify=False, headers=header)
loguru.logger.info(l_res.json())
else:
loguru.logger.error(f"未登录成功{res.content}")
def input_info():
print(
"""\n
==========================================================================================
执行此程序示例:\n
python main.py --host 127.0.0.1 --username admin --password AdminPwd --user_id user-61m45
==========================================================================================
"""
)
parser = argparse.ArgumentParser()
parser.add_argument("--host", type=str, help="Rancher登录地址")
parser.add_argument("--username", type=str, help="Rancher登录用户名")
parser.add_argument("--password", type=str, help="Rancher登录密码")
parser.add_argument("--user_id", type=str, help="Rancher登录用户对应的用户ID")
args = parser.parse_args()
if not args.host or not args.username or not args.password or not args.user_id:
parser.print_help()
return
return args.host, args.username, args.password, args.user_id
if __name__ == "__main__":
param = input_info()
if param:
g = rancherLogProcess(*param)
g.main()
此脚本依赖
loguru==0.6.0
requests==2.28.2
如果要离线使用时,可以通过pyinstaller
将程序打包为可执行程序,这样不需要在考虑环境依赖问题。