请给出一个用go 实现的查询k8s 部署了那些应用的程序以及这些应用的访问路径
时间: 2024-02-03 21:14:49 浏览: 55
部署应用到k8s的监控平台上
以下是一个使用 Go 语言编写的查询 Kubernetes 部署的应用程序及其访问路径的程序示例:
```go
package main
import (
"context"
"flag"
"fmt"
"log"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
func main() {
var namespace string
flag.StringVar(&namespace, "namespace", "default", "The namespace to search in")
flag.Parse()
config, err := rest.InClusterConfig()
if err != nil {
log.Fatalf("Failed to get config: %v", err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
pods, err := clientset.CoreV1().Pods(namespace).List(context.Background(), metav1.ListOptions{})
if err != nil {
log.Fatalf("Failed to list pods: %v", err)
}
for _, pod := range pods.Items {
for _, container := range pod.Spec.Containers {
fmt.Printf("Found container %s in pod %s\n", container.Name, pod.Name)
for _, port := range container.Ports {
fmt.Printf("\tPort %d/%s is exposed\n", port.ContainerPort, port.Protocol)
}
}
for _, containerStatus := range pod.Status.ContainerStatuses {
if containerStatus.Ready {
fmt.Printf("Pod %s is ready\n", pod.Name)
} else {
fmt.Printf("Pod %s is not ready\n", pod.Name)
}
}
}
}
```
此程序使用 Kubernetes Go 客户端库来连接到 Kubernetes API 服务器并获取所有运行在指定命名空间中的 Pod。对于每个 Pod,程序会打印出 Pod 中所有容器的名称以及暴露的端口。如果 Pod 中的所有容器都处于就绪状态,程序将打印出 Pod 就绪的消息。
阅读全文