接下來將要將介紹在kubernetes叢集中操作資源api的客戶端,透過client-go來實現對k8s資源的新增、修改、刪除和查詢等操作。
client-go是一個調用k8s叢集資源API的客戶端,通過client-go可以對deployment、service、ingress、replicaSet、pod、namespace、node等進行操作。
client-go的連結: https://github.com/kubernetes/client-go
go get k8s.io/client-go@v0.19.2
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
...
clientset, err = kubernetes.NewForConfig(config)
...
$HOME/.kube/config
var c *kubernetes.Clientset
var pod *v1.Pod
ctx := context.Background()
//建立pod
pod, err := c.CoreV1().Pods(<namespace>).Create(ctx, <pod>, metav1.CreateOptions{})
// 更新pod
pod, err := c.CoreV1().Pods(<namespace>).Update(ctx, <pod>, metav1.UpdateOptions{})
// 删除pod
err := c.CoreV1().Pods(<namespace>).Delete(ctx, <pod.Name>, metav1.DeleteOptions{})
// 查询pod
pod, err := c.CoreV1().Pods(<namespace>).Get(ctx, <pod.Name>, metav1.GetOptions{})
// 列出pod
podList, err := c.CoreV1().Pods(<namespace>).List(ctx, metav1.ListOptions{})
// watch pod
podWatch, err := c.CoreV1().Pods(<namespace>).Watch(ctx, metav1.ListOptions{})
}
有關client-go可以對k8s資源api的調用,都和pod使用方式也都大同小異,這裡就不再列出。