首页 > 其他分享 >k8s之operator

k8s之operator

时间:2024-03-21 15:36:44浏览次数:21  
标签:info node fmt Println operator pod k8s pods

官网demo地址

https://github.com/kubernetes/client-go/blob/master/examples

新建mian.go代码

package main

import (
  "context"
  "flag"
  "fmt"
  "log"
  "path/filepath"

  metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  "k8s.io/client-go/kubernetes"
  "k8s.io/client-go/tools/clientcmd"
  "k8s.io/client-go/util/homedir"
)

var clientset *kubernetes.Clientset

func main() {
	var kubeconfig *string
	// 获取配置文件路径
	if home := homedir.HomeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse() // flags解析
	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) // 根据配置文件生成配置文件对象,这个对象如下面的代码注释
	if err != nil {
		log.Println(err)
		return
	}
	clientset, err = kubernetes.NewForConfig(config) // 根据配置文件对象构建客户端
	if err != nil {
		log.Fatalln(err)
		return
	} else {
		fmt.Println("connect k8s success")
	}

	pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{}) // 获取 pods 列表信息
	if err != nil {
		log.Println(err.Error())
		return
	}

	for index, pod := range pods.Items {
		fmt.Println("pods info", index)
		fmt.Println("pods info", pod.Name)
		fmt.Println("pods info", pod.CreationTimestamp)
		fmt.Println("pods info", pod.Labels)
		fmt.Println("pods namespace", pods.Items[1].Namespace)
		fmt.Println("pods info", pod.Status.HostIP)
		fmt.Println("pods info", pod.Status.PodIP)
		fmt.Println("pods info", pod.Status.StartTime)
		fmt.Println("pods info", pod.Status.Phase)
		fmt.Println("pods info", pod.Status.ContainerStatuses[0].RestartCount) //重启次数
		fmt.Println("pods info", pod.Status.ContainerStatuses[0].Image)        //获取重启时间
	}
	fmt.Println("##################")
	nodes, err := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
	for index, node := range nodes.Items {
		fmt.Println("index info", index)
		fmt.Println("node info ", node.Name)
		fmt.Println("node info ", node.CreationTimestamp) //加入集群时间
		fmt.Println("node info ", node.Status.NodeInfo)
		fmt.Println("node info ", node.Status.Conditions[len(nodes.Items[0].Status.Conditions)-1].Type)
		fmt.Println("node info ", node.Status.Allocatable.Memory().String())
	}
}

执行 go mod tidy 下载对应的三方包

执行代码

connect k8s success
pods info 0
pods info grafana-54b54568fc-qzv46
pods info 2020-06-02 18:07:11 +0800 CST
pods info map[app:grafana chart:grafana heritage:Tiller pod-template-hash:54b54568fc release:istio-system]
pods namespace istio-system
pods info 9.134.74.51
pods info 192.168.10.8
pods info 2020-06-02 18:07:11 +0800 CST
pods info Running
pods info 1
pods info grafana/grafana:6.5.2
pods info 1
.......

标签:info,node,fmt,Println,operator,pod,k8s,pods
From: https://www.cnblogs.com/qcy-blog/p/18087483

相关文章

  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心实战
    文章目录Kubernetes基础概念1.是什么2.架构2.1工作方式2.2组件架构3.k8s组件创建集群步骤一基础环境步骤二安装kubelet、kubeadm、kubectl步骤三主节点使用kubeadm引导集群步骤四副节点加入主节点步骤五部署dashboardKubernetes核心实战1.资源创建方式2.N......
  • kubeshark查看k8s中pod的流量
    kubeshark的介绍在底层实现当中,Kubeshark主要使用到了Linux内核中的各种内置方法和API,隐藏了对流量数据的加解密实现,可以直接收集到K8s集群中的加密和未加密流量。对网络数据的收集主要使用了直接抓包法和基于拓展伯克利包过滤(eBPF)的数据包获取。直接抓包法涉及libpcap、AF_PACKE......
  • 通过nginx来验证k8s中externalTrafficPolicy策略
    过nginx来验证k8s中externalTrafficPolicy策略域名--->172.16.80.32(域名解析反向代理)----->nginx-pod1(Local模式,模拟前端代理到nginx2-pod2)----->nginx2-pod2(Cluster模式,实际后端服务)nginx的日志格式log_formatmain'"$remote_addr""$remote_user""......
  • 解决部署在k8s上spring cloud gateway 无故假死的情况
    解决部署在k8s上springcloudgateway无故假死的情况线上发现gateway会无故假死,测试环境使用jmeter几分钟后,gateway也会复现假死的情况开始排查获取容器列表kubectlgetpod-owide进入gatewaykubectlexec-itgateway-7dbc5d8d6d-wtbs5--bash将jdk拷贝进容器......
  • K8s(Kubernetes)-Tips
    K8S中文官网https://www.kubernetes.org.cn/Kubernetes集群组件结构一个kubernetes集群主要是由控制节点(master)、**工作节点(node)**构成,每个节点上都会安装不同的组件。master:集群的控制平面,负责集群的决策(管理)ApiServer:资源操作的唯一入口,接收用户输......
  • K8S集合
    1.什么是k8s,有什么用处?k8s是容器化编排管理工具。可以用来完成以下一些主要功能:基于容器的应用部署、维护和滚动升级。负载均衡和服务发现:跨机器和跨地区的集群调度。自动伸缩。广泛的Volume支持。插件机制保证扩展性2.工作节点NodeNode是K8S集群中的工作负载节点,每个No......
  • 猫头虎分享已解决Bug || Error: ImagePullBackOff (K8s)
    博主猫头虎的技术世界......
  • K8s的概念
    Kubernetes(简称K8s)是一个开源的容器编排系统,由Google开发,用于管理容器化的应用程序。K8s在Docker技术的基础上,提供了应用部署、资源调度、服务发现和动态伸缩等一系列功能,提高了大规模容器集群管理的便捷性。它能够自动化地部署、扩展和管理容器应用,还可以监控容器......
  • 处理K8S镜像无法拉取问题
    问题原因国内无法直接访问镜像地址,改为国内地址即可#!/bin/bash#downloadk8s1.28.8images#getimage-listby'kubeadmconfigimageslist--kubernetes-version=v1.15.2'#gcr.azk8s.cn/google-containers==k8s.gcr.ioimages=(kube-apiserver:v1.28.8kube-contr......
  • K8s 集群高可用 master 节点故障如何恢复? 原创
    K8s集群高可用master节点故障如何恢复?原创 山河已无恙 山河已无恙 2024-03-1702:01 内蒙古 听全文写在前面很常见的集群运维场景,整理分享博文内容为简单记录K8s集群高可用 master 节点故障恢复过程理解不足小伙伴帮忙指正不必太纠结于当下,也不必太忧......