请给出一个用go 实现的查询k8s 部署了那些应用的程序
时间: 2024-02-03 12:14:45 浏览: 40
以下是一个用 Go 实现的查询 Kubernetes 部署了哪些应用的程序:
```go
package main
import (
"context"
"flag"
"fmt"
"os"
"path/filepath"
"strconv"
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
func main() {
// 读取 kubeconfig 配置文件路径
kubeconfig := flag.String("kubeconfig", filepath.Join(os.Getenv("HOME"), ".kube", "config"), "(optional) absolute path to the kubeconfig file")
flag.Parse()
// 加载 kubeconfig 配置文件
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
panic(err)
}
// 创建 Kubernetes 客户端
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err)
}
// 获取所有的 Deployment
deployments, err := clientset.AppsV1().Deployments("").List(context.Background(), metav1.ListOptions{})
if err != nil {
panic(err)
}
// 输出部署的应用名称和副本数
for _, deployment := range deployments.Items {
fmt.Printf("应用名称:%s,副本数:%d\n", deployment.Name, *deployment.Spec.Replicas)
}
}
```
该程序可以通过命令行参数 `-kubeconfig` 指定 kubeconfig 配置文件的路径,如果不指定则默认读取 `$HOME/.kube/config` 文件。程序输出所有部署的应用名称和副本数。