Ansible Script 추가
This commit is contained in:
86
ansible/01_old/roles/test/files/k8s_status
Executable file
86
ansible/01_old/roles/test/files/k8s_status
Executable file
@@ -0,0 +1,86 @@
|
||||
#! /usr/bin/python3
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
import os, sys, subprocess, io, time
|
||||
from kubernetes import client, config
|
||||
def debug_print(msg):
|
||||
print(" # ", msg)
|
||||
|
||||
def k8s_conn(KUBE_CONFIG_PATH):
|
||||
config.load_kube_config(
|
||||
config_file=KUBE_CONFIG_PATH
|
||||
)
|
||||
k8s_api = client.CoreV1Api()
|
||||
|
||||
return k8s_api
|
||||
|
||||
def k8s_get_pod(k8s_api, namespace, target=''):
|
||||
pretty=False
|
||||
watch=False
|
||||
timeout_seconds=30
|
||||
api_response = k8s_api.list_namespaced_pod(namespace, pretty=pretty, timeout_seconds=timeout_seconds, watch=watch)
|
||||
pod_list=[]
|
||||
for pod in api_response.items:
|
||||
status = pod.status.phase
|
||||
#container_status = pod.status.container_statuses[0]
|
||||
#if container_status.started is False or container_status.ready is False:
|
||||
# waiting_state = container_status.state.waiting
|
||||
# if waiting_state.message is not None and 'Error' in waiting_state.message:
|
||||
# status = waiting_state.reason
|
||||
if target != '':
|
||||
if target in pod.metadata.name:
|
||||
return (pod.metadata.name + " " + status)
|
||||
pod_list.append(pod.metadata.name+" "+status)
|
||||
return pod_list
|
||||
|
||||
def k8s_pod_status_check(k8s_api, waiting_time, namespace,except_pod=False):
|
||||
num=0
|
||||
while True:
|
||||
num+=1
|
||||
resp=k8s_get_pod(k8s_api, namespace)
|
||||
all_run_flag=True
|
||||
if debug_mode:
|
||||
debug_print('-'*30)
|
||||
debug_print('pod 상태 체크시도 : {} ({}s)'.format(num, waiting_time))
|
||||
debug_print('-'*30)
|
||||
for i in resp:
|
||||
if except_pod:
|
||||
if except_pod in i.lower(): continue
|
||||
if 'pending' in i.lower():
|
||||
all_run_flag=False
|
||||
result='{} 결과: {}'.format(i, all_run_flag)
|
||||
debug_print(result)
|
||||
if all_run_flag:
|
||||
if debug_mode:
|
||||
debug_print('-'*30)
|
||||
debug_print('[{}] pod All Running'.format(namespace))
|
||||
debug_print('-'*30)
|
||||
for i in resp: debug_print(i)
|
||||
break
|
||||
else: time.sleep(int(waiting_time))
|
||||
|
||||
def main():
|
||||
namespace = os.sys.argv[1]
|
||||
|
||||
try:
|
||||
Except_k8s_pod = os.sys.argv[2]
|
||||
except:
|
||||
Except_k8s_pod = ''
|
||||
|
||||
try:
|
||||
KUBE_CONFIG_PATH = os.sys.argv[3]
|
||||
os.environ["KUBECONFIG"]=KUBE_CONFIG_PATH
|
||||
except:
|
||||
KUBE_CONFIG_PATH = os.environ["KUBECONFIG"]
|
||||
|
||||
k8s_api=k8s_conn(KUBE_CONFIG_PATH)
|
||||
k8s_pod_status_check(k8s_api, 60, namespace, Except_k8s_pod)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
debug_mode=False
|
||||
main()
|
||||
except Exception as err:
|
||||
print("[Usage] k8s_status {namespace} {Except_pod=(default=false)} {KUBECONFIG_PATH=(default=current env)}")
|
||||
print(err)
|
||||
Reference in New Issue
Block a user