kubernetes_k8s应用

发布时间 2023-12-14 20:09:52作者: 辰令

开发-测试-运维

1.传统的IT系统
  结构:开发-测试-运维
  运维难度和运维成本
    服务扩容: 涉及资源分配-实例部署-启动环节
	服务升级:
	服务监控
	服务治理:故障处理模块开发
2.从单机走向集群
   系统的可伸缩性(scalability
 	 横向扩容-水平可伸缩性(Horizontal scalability)就是添加多台内存和CPU差不多的服务器
	       是一种通过增加多个相同的节点来扩展应用程序的方法 更好地解决资源分配不均的问题
     纵向--垂直可伸缩性(Vertical scalability)就是对单个一台服务器添加更多的内存和CPU,也叫做纵向扩容(scale up)。纵向扩容适用在数据库层

kind

 docker exec -it kind-control-plane crictl images
  crictl 是 CRI 兼容的容器运行时命令行接口。 你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序	 
	crictl 是 CRI 兼容的容器运行时命令行对接客户端, 你可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序。
	 由于该命令是为k8s通过CRI使用containerd而开发的(主要是调试工具), 
	 
 CoreDNS     # DNS ==外部
 ConfigMap   无侵入的配置中心 

k8s 命令行

抽象--服务--service
    基于Service的虚拟IP地址-ClusterIP的设计思路
 隔离--pod
 屏蔽
 service 通过 label selector 联系pod
 一个人就是一支队伍, 
kubectl apply -f 
kubectl get deployments
kubectl get rs
kubectl get pods
kubectl describe deployments 
kubectl edit deployment/redis-deployment
kubectl rollout status deployment/redis-deployment
kubectl rollout history deployment/nginx-deployment	   
kubectl logs 命令查看多个容器

k8s 客户端

python : k8s client使用相对比较简单,有官方推荐的client sdk,安装使用:pip install kubernetes
  先复制k8s的配置文件:配置文件里面包含了具体的认证信息
  cp ~/.kube/config kubeconfig.yaml
这三个 API 都是 Kubernetes Python 客户端库中的 API,它们分别用于不同的 Kubernetes API 对象。
 AppsV1Api:用于管理 Kubernetes 应用程序的 API 对象,如 Deployment、StatefulSet、DaemonSet 和 ReplicaSet 等。
     管理 Kubernetes 应用程序
 BatchV1Api:用于管理 Kubernetes 批处理作业的 API 对象,如 Job 和 CronJob 等。
      管理 Kubernetes 批处理作业
 CoreV1Api:用于管理 Kubernetes 核心 API 对象,如 Pod、Service、Namespace、Node 和 PersistentVolume 等。
     管理 Kubernetes 核心 API 对象
1.拼接python数据结构创建的方法		 
2.可以使用yaml模块读取文件来创建:
    import yaml
    import json
    with open('ali3.yaml','r',encoding='utf8') as file:#utf8可识别中文
        fff=yaml.safe_load(file)
    #然后创建				 

示例

#使用
from kubernetes import client, config
from kubernetes.stream import stream
import yaml

# kubeconfig.yaml保存的路径
config_file="kubeconfig.yaml"
config.kube_config.load_kube_config(config_file=config_file)
#获取API的CoreV1Api和BatchV1Api版本对象
Api_Instance = client.CoreV1Api()
Api_Batch = client.BatchV1Api()

# 指定命名空间
namespace = 'default'

# 获取 Pod 列表
pod_list = Api_Instance.list_namespaced_pod(namespace)

# 遍历 Pod 列表
for pod in pod_list.items:
    print(f'{pod.metadata.namespace}/{pod.metadata.name}')

帮助系统

查看各组件和简写
   kubectl api-resources 
### 全部命名空间下所有 某命名空间下所
   kubectl get all -A
   kubectl get all -n dev	   

参考

 kubernetes之Deployment详解	 https://blog.csdn.net/qq_36551991/article/details/134406068
 https://github.com/kubernetes-client/python