관리-도구
편집 파일: kubernetes.cpython-39.pyc
a -�_g�1 � @ s� d dl mZ d dlZd dlZd dlZd dlmZmZmZm Z m Z dZdZdZ G dd� de�ZG d d � d ee�ZG dd� dee e�ZdS ) � )� translateN)�Plugin�RedHatPlugin�DebianPlugin�UbuntuPlugin� PluginOpt)�kubelet� kubernetes)r zkube-apiserverz kube-proxyzkube-schedulerzkube-controller-manager)z/etc/kubernetes/admin.confc @ s� e Zd ZdZdZdZdZg d�ZdgZg d�Z g d�Z g d �Zed ddd �edddd �edddd �edddd �edde dd�gZdZdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'S )(� Kubernetesz+Kubernetes container orchestration platformr )� containeri� )z/etc/kubernetesz/run/flannelz/var/lib/kubelet/config.yamlz"/var/lib/kubelet/kubeadm-flags.envz /var/lib/kubelet/*_manager_statez/etc/kubernetes/pki)z /var/log/pods/kube-system_etcd-*z*/var/log/pods/kube-system_kube-apiserver-*z3/var/log/pods/kube-system_kube-controller-manager-*z*/var/log/pods/kube-system_kube-scheduler-*)�eventsZdeploymentsZ ingresses�podsZpvc�servicesZ daemonsetsZreplicasetsZ endpointsZstatefulsetsZ configmapsZserviceaccountsZsecretsZjobsZcronjobsZclusterrolesZclusterrolebindingsZlimitrangesZresourcequotas)ZscZpvZrolesZrolebindings�allFz'collect all namespace output separately)�default�desc�describez(collect describe output of all resources�kubelogsz4copy some kube-system pod logs without using the API�podlogsz2capture stdout/stderr logs from pods using the API�podlogs-filter� z1only collect logs from pods matching this pattern)r Zval_typer Zkubectlc C sB t j�d�rd S | jD ]&}| �|�r| jd|� �7 _ q>qd S )N� KUBECONFIGz --kubeconfig=)�os�environ�get�files�path_exists�kube_cmd)�selfZ_kconf� r �A/usr/lib/python3.9/site-packages/sos/report/plugins/kubernetes.py�set_kubeconfigk s zKubernetes.set_kubeconfigc s t � fdd�� jD ��S )z" Check if this is the master node c 3 s | ]}� � |�V qd S �N)r )�.0�f�r r r � <genexpr>u � z-Kubernetes.check_is_master.<locals>.<genexpr>)�anyr r% r r% r �check_is_masters s zKubernetes.check_is_masterc s� � � � j� � �� j� � �d�r.� � � j� � �g d�� � �� sHd S dD ]}� j� j � d|� �dd� qL� �d�r�� j� fdd �� j D �dd� n� j� fd d �� j D �dd� � j� j � d�dd�}|d d k�r0� �d��r0|d �� dd � D ]6}|� � }|�sq�|d }� j� j � d|� �dd� q�� j� j � d�gdd� � j� j � d�dd� � �d��r�� j�ddg� � �d� � �� � �� d S )Nr )r ZKUBERNETES_HTTP_PROXYZKUBERNETES_HTTPS_PROXYZKUBERNETES_NO_PROXY)�versionzconfig view� �cluster-info�Zsubdirr c s g | ]}� j � d |� ��qS )� get -o json �r �r# �resr% r r � <listcomp>� s �z$Kubernetes.setup.<locals>.<listcomp>c s g | ]}� j � d |� ��qS )� get r/ r0 r% r r r2 � s �z get nodes�statusr r �output� z describe node z get -o json nodesz get --raw /metricszkubevirt-virtctlZvmsZvmiszvirtctl version)� add_copy_spec�config_filesZadd_forbidden_path�forbidden_paths� get_option�kube_system_logsZadd_env_varr) �add_cmd_outputr �global_resources�collect_cmd_output� splitlines�split�is_installed� resources�extend�collect_per_resource_details�collect_all_resources)r �subcmdZnodes�line�wordsZnoder r% r �setupw sd � ������ �� � zKubernetes.setupc C s` | j | j� d�dd�}|d �� dd� }dd� |D �}|D �]}d |� �}| �d �r�| j� d|� �}| jD ]"}| j|� d|� �d |� �d� ql| �d��rF| j� d|� �}| jD ]�}|dkr�q�| �|� d|� ��}|d dkr�dd� |d �� dd� D �} | D ]@} | j� d|� �}| j|� d|� d| � �d |� d|� �d� �qq�| �d�r<| �|� q<dS )z7 Collect details about each resource in all namespaces z get namespacesr, r- r5 r6 Nc S s( g | ] }|rt |�� �r|�� d �qS �r )�lenr@ )r# �nr r r r2 � r'