관리-도구
편집 파일: 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'���z;Kubernetes.collect_per_resource_details.<locals>.<listcomp>z--namespace=r���r.���r+���� cluster-info/r���r���r3���r4���r���c�����������������S���s���g�|�]}|����d���qS�rJ���)r@���)r#����kr���r���r ���r2�������r'���z describe �/r���)r>���r���r?���r:���rB���r<����exec_cmd� _get_pod_logs)r���ZknsZ kn_outputZknspsZnspaceZknsp�k_cmdr1����retZk_list�itemr���r���r ���rD�������s@����� � �� z'Kubernetes.collect_per_resource_detailsc�������������� ���C���sV��|�j���d|���}|��|��d��}|d�dk�rRt�|d��}|��d�rTt|��d��nd�}|d�D�]�}|r~t�||d�d ��s~q`d |d�d���d|d�d ����}d |d�v�r�|d�d �D�]>}|d�d �} |d �} |�j|�j���d|��d| ��d| ���|d��q�d|d�v�r`|d�d�D�]@}|d�d �} |d �} |�j|�j���d|��d| ��d| ���|d���qq`d�S�)Nr.���z podsr4���r���r5���r����items�metadata�namerM���� namespacez /podlogs/Z containers�specr+���z logs z -c r-���ZinitContainers) r���rP����json�loadsr:���r����re�matchr<���)r���rX���rR���rS���r ���ZregZpodZ_subdirZcontZpod_nameZ cont_namer���r���r ���rQ�������sP������ � �������zKubernetes._get_pod_logsc�����������������C���s>���|���d�s:|�j��d�}|�jD�]}|�j|��d|���dd��qdS�)z% Collect details about all resources r���z get --all-namespaces=truer+���r,���r-���N)r:���r���rB���r<���)r���rR���r1���r���r���r ���rE�����s���� �z Kubernetes.collect_all_resourcesc�����������������C���sv���d}|���|�j|d��|��|�j��dd�|�j���d�}|��|��d}d}dd�t|�j�|�j����d�}|��|||��d�S�)NzX(?P<var>{\s*"name":\s*[^,]*(pass|pwd|key|token|cred|PASS|PWD|KEY)[^,]*,\s*"value":)[^}]*z\g<var> "********"z^(�|�)zLS0tLS1CRUdJ[A-Za-z0-9+/=]+z***** SCRUBBED BASE64 PEM *****) Zdo_cmd_output_subr���Zdo_cmd_private_sub�joinr8����do_file_private_sub�listr���Zdo_path_regex_sub)r���Z env_regexpZpathexpZregexp�substr���r���r ����postproc��s���� � zKubernetes.postprocN)�__name__� __module__�__qualname__Z short_descZplugin_nameZprofilesZplugin_timeoutr8���r9���r;���rB���r=���r����strZoption_listr���r!���r)���rI���rD���rQ���rE���rd���r���r���r���r ���r ���&���sD���������� E(! r ���c�����������������������s4���e�Zd�ZeZeZeZ��fdd�Z ��fdd�Z ���ZS�)�RedHatKubernetesc��������������������s���|���d�rdS�t�����S�)Nzopenshift-hyperkubeF)rA����super� check_enabledr%����� __class__r���r ���rk���/��s���� zRedHatKubernetes.check_enabledc��������������������s���|������t������d�S�r"���)r!���rj���rI���r%���rl���r���r ���rI���5��s����zRedHatKubernetes.setup)re���rf���rg���� KUBE_PACKAGES�packages�KUBECONFIGSr���� KUBE_SVCSr���rk���rI���� __classcell__r���r���rl���r ���ri���'��s ���ri���c�����������������������sH���e�Zd�Zed�Zed�Zed�Z��fdd�Z dd��Z ��fdd �Z���ZS�) �UbuntuKubernetes)�k8s)z#/root/cdk/cdk_addons_kubectl_configz4/var/snap/microk8s/current/credentials/client.config)zsnap.kubelet.daemonzsnap.kube-apiserver.daemonzsnap.kube-proxy.daemonzsnap.kube-scheduler.daemonz#snap.kube-controller-manager.daemonzcdk.master.auth-webhookc��������������������sP���|������|��d�rd|�_n|��d�r2d|�_|�����|�j�ddg��t������d�S�)NZmicrok8szmicrok8s kubectlrt���zk8s kubectlz/root/cdk/kubelet/config.yamlz!/root/cdk/audit/audit-policy.yaml)r!���rA���r����_canonical_kubernetesr8���rC���rj���rI���r%���rl���r���r ���rI���O��s���� �zUbuntuKubernetes.setupc�������������� ������sz���|�j�dd��d��d}ddg}|��|��d�|��d�|��d �|��d �|��d�|��d�|��d �g��|����fdd�|D����d�S�)Nz snap.k8s.*)Zunitsrt���z/var/snap/k8s/commonr4���r���z/argsz/var/lib/k8s-dqlite/info.yamlz /var/lib/k8s-dqlite/cluster.yamlz'/var/lib/k8sd/state/truststore/k8s.yamlz&/var/lib/k8sd/state/database/info.yamlz)/var/lib/k8sd/state/database/cluster.yamlz/var/lib/k8sd/state/daemon.yamlc��������������������s���g�|�]}����d�|����qS�)r+���r���)r#���rF����Zk8s_cmdr���r ���r2���s��s���z:UbuntuKubernetes._canonical_kubernetes.<locals>.<listcomp>)Zadd_journalr7���r<���)r���Z k8s_commonZk8s_subcmdsr���rv���r ���ru���^��s$������ �z&UbuntuKubernetes._canonical_kubernetesc��������������������s���t�������|��d��d�S�)Nz;/var/snap/k8s/common/var/lib/k8sd/state/truststore/k8s.yaml)rj���rd���ra���r%���rl���r���r ���rd���w��s���� �zUbuntuKubernetes.postproc) re���rf���rg���rn���ro���rp���r���rq���r���rI���ru���rd���rr���r���r���rl���r ���rs���:��s��� rs���)�fnmatchr���r\���rZ���r���Zsos.report.pluginsr���r���r���r���r���rn���rq���rp���r ���ri���rs���r���r���r���r ����<module>���s�����