<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      python管理k8s集群

      1、python怎么管理k8s

      k8s最核心的組件就是api-server,大部分的組件都是監聽這個端口的,因此只有有著api就能進行使用python來管理k8s了

      2、操作

      1、參數詳細的介紹

      #導入這些庫
      from kubernetes import  client,config
      from kubernetes.stream import  stream
      
      Api_Instance = client.CoreV1Api() #是一個python客戶端中的一個類,提供對核心資源pods,service,configmaps,secrets等的訪問,是k8s中集群管理和操作的基礎
      
      Api_Batch = client.BatchV1Api() 
      
      CoreV1Api
      pods的相關操作
      list_namespaced_pod(namespace)列出特定命名空間中的所有 Pod。
      read_namespaced_pod(name, namespace) 獲取特定命名空間中某個 Pod 的詳細信息
      create_namespaced_pod(namespace, body): 在特定命名空間中創建一個新的 Pod
      delete_namespaced_pod(name, namespace): 刪除特定命名空間中的某個 Pod
      
      service相關的操作
      list_namespaced_service(namespace): 列出特定命名空間中的所有 Service
      read_namespaced_service(name, namespace): 獲取特定命名空間中某個 Service 的詳細信息
      create_namespaced_service(namespace, body): 在特定命名空間中創建一個新的 Service
      delete_namespaced_service(name, namespace): 刪除特定命名空間中的某個 Service
      ice。
      delete_namespaced_service(name, namespace): 刪除特定命名空間中的某個 Service。
      
      ConfigMaps(ConfigMap 相關操作)
      
      list_namespaced_config_map(namespace): 列出特定命名空間中的所有 ConfigMap。
      read_namespaced_config_map(name, namespace): 獲取特定命名空間中某個 ConfigMap 的詳細信息。
      create_namespaced_config_map(namespace, body): 在特定命名空間中創建一個新的 ConfigMap。
      delete_namespaced_config_map(name, namespace): 刪除特定命名空間中的某個 ConfigMap。
      
      Secrets(Secret 相關操作)
      
      list_namespaced_secret(namespace): 列出特定命名空間中的所有 Secret。
      read_namespaced_secret(name, namespace): 獲取特定命名空間中某個 Secret 的詳細信息。
      create_namespaced_secret(namespace, body): 在特定命名空間中創建一個新的 Secret。
      delete_namespaced_secret(name, namespace): 刪除特定命名空間中的某個 Secret。
      
      BatchV1Api
      提供批處理api資源(jobs和cronjobs)的訪問,批處理api資源,通常用于管理批處理任務和定時的任務
      
      主要方法
      Jobs(Job 相關操作)
      
      list_namespaced_job(namespace): 列出特定命名空間中的所有 Job。
      read_namespaced_job(name, namespace): 獲取特定命名空間中某個 Job 的詳細信息。
      create_namespaced_job(namespace, body): 在特定命名空間中創建一個新的 Job。
      delete_namespaced_job(name, namespace): 刪除特定命名空間中的某個 Job。
      
      CronJobs(CronJob 相關操作)
      
      list_namespaced_cron_job(namespace): 列出特定命名空間中的所有 CronJob。
      read_namespaced_cron_job(name, namespace): 獲取特定命名空間中某個 CronJob 的詳細信息。
      create_namespaced_cron_job(namespace, body): 在特定命名空間中創建一個新的 CronJob。
      delete_namespaced_cron_job(name, namespace): 刪除特定命名空間中的某個 CronJob
      
      

      2、k8s節點

      #獲取所有的node節點
      def list_node():
          node_name=api_Instance.list_node()
          data={}
          for i in node_name.items:  #獲取的就是這個items的對應的列表
              # print(i)   獲取這個對象
              data[i.metadata.name] = {
                  "name": i.metadata.name,
                  "status": i.status.conditions[-1].type if i.status.conditions[-1].status == "True" else "NotReady",   #這個是三元運算符,第一個結果成立了,就為true,否則為NotReady
                  "ip": i.status.addresses[0].address,
                  "kubelet_version": i.status.node_info.os_image,
              }
          return data
      allnode=list_node()
      print(allnode)
      
      #輸出結果
      {'master': {'name': 'master', 'status': 'Ready', 'ip': '192.168.109.100', 'kubelet_version': 'CentOS Linux 7 (Core)'}, 'node1': {'name': 'node1', 'status': 'Ready', 'ip': '192.168.109.101', 'kubelet_version': 'CentOS Linux 7 (Core)'}, 'node2': {'name': 'node2', 'status': 'Ready', 'ip': '192.168.109.102', 'kubelet_version': 'CentOS Linux 7 (Core)'}}
      
      這樣的話就能得到所有的node節點了
      
      

      3、關于namespace的詳細操作

      #列出所有的名稱空間
      from kubernetes import  client,config
      config.kube_config.load_kube_config("D:/config")  #獲取相關的認證信息,
      
      api_Instance = client.CoreV1Api()
      for ns in api_Instance.list_namespace().items:
          print(ns.metadata.name)    #返回是是一個對象,然后items對應的是一個列表,然后打印里面metadata.name對應的值即可
      
      
      #打印單個名稱空間
      nameapce_name="dev"  #查看名稱空間
      namespace=api_Instance.read_namespace(name=nameapce_name)  #查看單個名稱空間
      print(namespace.metadata.name) #打印名稱空間的名字
      for i in namespace.metadata.labels.keys(): #打印名稱空間的標簽
          print(i)
      print(namespace.metadata.uid) #打印名稱空間的uid
      
      
      #刪除名稱空間
      del_namespace="dev"
      api_Instance.delete_namespace(name=del_namespace)
      print(f"{del_namespace} is delete")
      
      #創建名稱空間
      nameapce=client.V1Namespace(  #創建一個namespace對象
          metadata=client.V1ObjectMeta(  #用于標識k8s資源對象元數據類型,就是里面的屬性
              name= "dev",
              labels={"app": "example-app"}
          )
      )
      api_Instance.create_namespace(body=nameapce)  #這個body字段接收的就是一些關于namespace一些屬性,標簽,注解等
      
      
      

      4、pod的詳細操作

      1、展示pod

      #使用的方法是list_pod_for_all_namespaces()
      def list_pod():
          data={}
          for i in api_Instance.list_pod_for_all_namespaces().items:
              data[i.metadata.name]={
                  "ip": i.status.pod_ip,
                  "namespace": i.metadata.namespace
              }
          return data
      pod=list_pod()
      print(pod)
      
      #展示單個pod
      pod_name="nginx-deployment-5cb65f68db-jnbft"
      pod1_name=api_Instance.read_namespaced_pod(name=pod_name,namespace="dev")
      print(f"{pod1_name.metadata.name}\n"
            f"ip為{pod1_name.status.pod_ip}")
      
      #展示名稱空間下面的所有的pod
      #列出名稱空間下面所有的pod
      pod_name=api_Instance.list_namespaced_pod(namespace="default")
      print(pod_name)
      
      

      2、刪除Pod

      for i in api_Instance.list_namespaced_pod(namespace="default").items:
          pod_name=i.metadata.name
          api_Instance.delete_namespaced_pod(name=pod_name,namespace="default")
          print(f"{pod_name}刪除成功")
      

      3、創建pod

      #yaml文件
      apiVersion: v1
      kind: Pod
      metadata:
          name: d3
          namespace: default
      spec:
        containers:
          - name: nginx
            image: nginx:1.17.2
            imagePullPolicy: IfNotPresent
      
      import  yaml
      def pod_create(file,namespace="default"):
          with open(file) as f:
              dev =yaml.safe_load(f) #安全加載yaml格式數據
              pod1=api_Instance.create_namespaced_pod(namespace,body=dev)
              return  pod1
      pod=pod_create("pod.yaml")
      print("res",pod)
      
      

      4、修改pod內容

      5、deployment的詳細操作

      1、查看控制器

      
      qq=client.AppsV1Api()  #查看deplyment,StatefulSet、DaemonSet控制器等資源
      #查看命名空間下的deployment
      deploy_name=qq.list_namespaced_deployment(namespace="default")
      print(deploy_name)
      #查看所有的deployment
      dep=qq.list_deployment_for_all_namespaces().items
      for i in dep:
          print(i.metadata.name)
      
      #查看單獨的控制器
      d1=qq.read_namespaced_deployment(namespace="default",name="nginx-deploy")
      print(d1)
      
      

      2、刪除deployment

      d4=qq.list_namespaced_deployment(namespace="default").items
      for i in d4:
          dea=i.metadata.name
          d3=qq.delete_namespaced_deployment(namespace="default",name=dea)
          print(f"{dea} is delete")
      
      

      3、創建deployment

      def creat_deployment(file,namespace="default"):
          with open(file) as f:
              dc1=yaml.safe_load(f) #yaml文件
              ds=qq.create_namespaced_deployment(namespace,body=dc1)
              return ds #返回這個rs
      rs=creat_deployment("deployment.yaml")
      print(f"{rs}")
      
      

      4、修改deployment

      6、service的詳細操作

      1、查看service

      #查看所有的名稱空間下的service
      q1=api_instance.list_service_for_all_namespaces().items
      for i in q1:
          print(i.metadata.name)
      
      #查看名稱空間下的所有svc
      q2=api_instance.list_namespaced_service(namespace="default").items
      for i in q2:
          print(i.metadata.name)
      
      #查看單個svc
      q2=api_instance.read_namespaced_service(namespace="default",name="nginx-svc")
      print(q2)
      
      

      2、刪除service

      d1=api_instance.delete_namespaced_service(namespace="default",name="nginx-svc")
      print(f"刪除成功")
      
      

      3、創建service

      def creat_service(file,namespace="default"):
          with open(file) as f:
              svc=yaml.safe_load(f)
              s1=api_instance.create_namespaced_service(namespace,body=svc)
              return s1
      rs=creat_service("service.yaml")
      print(f"{rs}")
      

      4、修改service

      7、job詳細的操作

      1、查看job

      ww=client.BatchV1Api()
      #查看所有的job
      j1=ww.list_job_for_all_namespaces().items
      for i in j1:
          print(i.metadata.name)
      
      #查看名稱空間下面的所有job
      j2=ww.list_namespaced_job(namespace="default")
      for i in j2.items:
          print(i.metadata.name)
      
      #單獨查看job
      j3 = ww.read_namespaced_job(namespace="default",name="job-controller")
      print(j3)
      
      
      

      2、刪除job

      j3=ww.delete_namespaced_job(namespace="default",name="job-controller")
      print("刪除成功")
      
      #刪除job下面的pod
      w1=api_instance.list_namespaced_pod(namespace="default")
      # print(w1)
      for i in w1.items:  #根據標簽來進行定義
          if i.metadata.labels["app"] == "counter-pod":
              pod_name=i.metadata.name  #pod的名字
              api_instance.delete_namespaced_pod(namespace="default",name=pod_name)
              print(f"{pod_name} is delete")
      
      

      3、創建job

      def create_job(file,namespace="default"):
          with open(file) as f:
              dev=yaml.safe_load(f)  #讀取這個文件
              j1=ww.create_namespaced_job(namespace,body=dev)  #創建文件
              return j1
      rs=create_job("job.yaml")
      print(f"{rs}")
      
      

      4、修改job

      3、總結

      1、python管理k8s

      python提供了很多的api接口來讓我們調用k8s

      core_api = client.CoreV1Api()  # 管理核心資源(Pod, Service, ConfigMap 等)
      apps_api = client.AppsV1Api()  # 管理應用資源(Deployment, StatefulSet, DaemonSet 等)
      batch_api = client.BatchV1Api()  # 管理批處理任務資源(Job, CronJob)
      rbac_api = client.RbacAuthorizationV1Api()  # 管理角色和權限綁定資源
      networking_api = client.NetworkingV1Api()  # 管理網絡資源(Ingress, NetworkPolicy)
      custom_objects_api = client.CustomObjectsApi()  # 管理自定義資源(CRD)
      
      

      2、各種方法大同小異

      1、列出的資源

      #列出所有的資源
      api.list_資源類型_for_all_namespace()
      
      #展示名稱空間下面的所有的資源
      api.list_namespaced_資源類型(namespace=)
      
      #展示單個資源
      api.read_namespace_資源(namespace=,name=)
      
      

      2、刪除資源

      api.delete_namespaced_資源(namespace=,name=)
      
      

      3、創建資源

      api.create_namespaced_資源(namespace=,body=)
      
      

      4、修改資源

      
      
      
      posted @ 2024-05-25 20:40  q_7  閱讀(365)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕乱码十国产乱码| 精品亚洲国产成人av| 日韩中文字幕一区二区不卡| 色妞www精品免费视频| 国产在视频线在精品视频2020| 亚洲国产精品高清久久久| 国产一区二区三区怡红院| 国产精品线在线精品国语| 亚洲精品国产字幕久久麻豆| 国产一区在线播放av| 丰满人妻一区二区三区色| 欧美大胆老熟妇乱子伦视频| 国产精品亚韩精品无码a在线| 麻豆tv入口在线看| 又黄又爽又色的少妇毛片| 天天躁日日躁狠狠躁av麻豆男男| 国产精品一品二区三四区| 2019香蕉在线观看直播视频| 男女18禁啪啪无遮挡激烈网站 | 人妻系列无码专区69影院| 国产一区二区三区四区五区加勒比| 精品国产成人国产在线观看| 国产91小视频在线观看| 蜜桃av亚洲第一区二区| 国产一区二区三区我不卡| 国产美女午夜福利视频| 这里只有精品免费视频| 午夜福利看片在线观看| 精品久久久久久久久午夜福利| 亚洲综合一区国产精品| 亚洲国产成人综合精品| 精品无人区一码二码三码| 秋霞电影网| 国产精品午夜福利导航导| 在线 欧美 中文 亚洲 精品| 99久久精品看国产一区| 国产自拍在线一区二区三区| 日本高清中文字幕一区二区三区 | 疯狂做受xxxx高潮欧美日本| 亚洲精品蜜桃久久久久久| 久久人妻精品大屁股一区|