简略 demo
package main
import (
"context"
apiv1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"log"
)
func main(){
kubeconfig := "config/kube.conf" // 来自集群中的 conf
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {panic(err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {panic(err)
}
deployments := clientset.AppsV1().Deployments(apiv1.NamespaceDefault)
list, err := deployments.List(context.TODO(), metav1.ListOptions{})
if err != nil {panic(err)
}
for _, d := range list.Items {log.Printf("* %s (%d replicas) %s \n",d.Name,*d.Spec.Replicas,d.Namespace)
}
namespaceList, err := clientset.CoreV1().Namespaces().List(context.TODO(), metav1.ListOptions{})
if err != nil {log.Fatal("namespace error",err)
panic(err)
}
for _,namespace := range namespaceList.Items {log.Println(namespace.Name,namespace.CreationTimestamp)
}
}
官网参考 https://github.com/kubernetes…
遇到的问题
1. 拉取镜像失败
能够 delete deployment 而后从新 apply,也能够在对应机器上手动拉下,如果应用公有镜像仓库,可能就没有这个问题
2. 批改 master node 名称
临时没有想到解决办法,我是重新部署整个集群之前把机器的名字改掉了
3.~/.kube/ 下没有 config 信息
master 下面没有,别的 node 上有,能够查看一下