Technology sharing

[K8s source code] 1.client-ire instruere extra botrum

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

client-go est bibliotheca clientis publicata et conservata per k8s specialiter pro developers ut penitus cum kubernetes. Crud operationes (creare, legere, renovare, delere) in opibus k8s, eventum vigilantiae et processus, et accessum ad contextum et conformationem botri kubernetarum.

Cliens go est machina clientis quae kubernetes botri sui iuris est sed cum botro interact. Instrue ambitum huius machinae ire et nexum cum kubernetibus institue.

Linux

Install ire environment

Ut in nova nodi nodum (me in casu virtualis apparatus) instituere ire amet, primum fac sarcinam institutionis ingredi et eam ex rutrum detrahe.Omnes emissiones - The Go Programming Language

Cum servo versionem machinae virtualis instituo, cum ambitum ire instituo, torqueo imperio utor ut sarcina institutionis deprimatur. Quoniam convenientiam determinare debes inter ambitum ambitum et botrum k8s, debes versionem botri k8s inhibere.

[root@master~]# kubectl versio --short
Client Version: v1.23.1
Servo Version: v1.23.1

Compesce documenta officialis kubernetes et reperire illam versioni 1.19.5 par abire.

  1. [root@client ~]# curl -L -O https://go.dev/dl/go1.19.5.linux-amd64.tar.gz
  2. % Total % Received % Xferd Average Speed Time Time Time Current
  3. Dload Upload Total Spent Left Speed
  4. 100 75 100 75 0 0 131 0 --:--:-- --:--:-- --:--:-- 131
  5. 100 65.7M 100 65.7M 0 0 3446k 0 0:00:19 0:00:19 --:--:-- 3513k
  6. [root@client ~]# file go1.22.5.linux-amd64.tar.gz
  7. # 验证下载文件的类型是否为压缩包
  8. go1.22.5.linux-amd64.tar.gz: gzip compressed data, max compression, original size modulo 2^32 232839680 gzip compressed data, unknown method, has CRC, extra field, has comment, encrypted, from FAT filesystem (MS-DOS, OS/2, NT), original size modulo 2^32 232839680
  9. [root@client ~]# rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz

Adde adi variabilis ambitus et versionem vide ite ad determinare num feliciter instituatur.

  1. [root@client ~]# export PATH=$PATH:/usr/local/go/bin
  2. [root@client ~]# go version
  3. go version go1.19.5 linux/amd64

Adde ire ad ambitum variabilem pertinaciter, et exportare PATH=... superius scribe ad fasciculi systematis.

  1. [root@client ~]# vim ~/.bashrc
  2. [root@client ~]# source ~/.bashrc
Configurare client-go

Si versionem Kubernetes adhibes >= v1.17.0, quaeso utere v0.xy congruente tag. Exempli gratia, k8s.io/[email protected] respondet Kubernetes v1.20.4. Mea versio est 1.23.1, sic versionem clientelam respondentem depone;

go get k8s.io/client-go@v0.23.1

ire mod file creat et incipit ire modus auxilio;

  1. go mod init <module-name>
  2. export GO111MODULE=on

Fasciculus initialis go.mod tunc creabitur, incluso moduli nomine et ibo ad informationem versionis. Ut consilium explicatur vel dependentiae additae sunt, ibit automatice renovatio . Scapus go.sum etiam generatur ad constantiam et complementum dependentiarum. Igitur, fasciculus go.modus paulatim omnes clientelas et informationes versionis quae ab incepto requisitae sunt cumulabit.

Utere client-ire ad capiendos informationes

Scribere main.go file

  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  6. "k8s.io/client-go/kubernetes"
  7. "k8s.io/client-go/tools/clientcmd"
  8. "context"
  9. )
  10. func main() {
  11. // 配置 k8s 集群外 kubeconfig 配置文件
  12. var kubeconfig *string
  13. kubeconfig = flag.String("kubeconfig", "/etc/k8scoonfig/config", "absolute path to the kubeconfig file")
  14. namespace := flag.String("namespace","default","the namespace to list the pod from")
  15. flag.Parse()
  16. // use the current context in kubeconfig
  17. config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
  18. if err != nil {
  19. panic(err.Error())
  20. }
  21. // create the clientset
  22. clientset, err := kubernetes.NewForConfig(config)
  23. if err != nil {
  24. panic(err.Error())
  25. }
  26. // 获取集群中所有 Pod 列表
  27. pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})
  28. if err != nil {
  29. panic(err.Error())
  30. }
  31. fmt.Printf("There are %d pods in the k8s clustern", len(pods.Items))
  32. // 获取指定 namespace 中的 Pod 列表
  33. pods, err = clientset.CoreV1().Pods(*namespace).List(context.TODO(), metav1.ListOptions{})
  34. if err != nil {
  35. panic(err)
  36. }
  37. fmt.Printf("There are %d pods in namespace %sn", len(pods.Items), namespace)
  38. for _, pod := range pods.Items {
  39. fmt.Printf("Name: %s, Status: %s, CreateTime: %vn", pod.Name, pod.Status.Phase, pod.CreationTimestamp)
  40. }
  41. }

Cum spatio nominali ut monitor-sa denotans, clientem feliciter capere potes numerum leguminarum in spatio nominali in botro.

  1. [root@client client_go_examples]# ./app -kubeconfig=/etc/k8scoonfig/config -namespace="monitor-sa"
  2. There are 18 pods in the k8s cluster
  3. There are 3 pods in namespace monitor-sa
  4. Name: node-exporter-jb9jp, Status: Running, CreateTime: 2024-07-06 11:47:33 +0000 UTC
  5. Name: node-exporter-kpvxd, Status: Running, CreateTime: 2024-07-06 11:47:33 +0000 UTC
  6. Name: node-exporter-pwdw4, Status: Running, CreateTime: 2024-07-06 11:47:33 +0000 UTC

fenestras

Download kubectl. Nota locum quem depones et hic serva est locus quem postea referes, optimum est ergo meminisse viam salvam et in folder downloade non servare.https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/windows/amd64/kubectl.exe

Adde eam ad variabilis environment. kube hic est folder ubi kubectl.exe reponitur.

Aperi fenestras lineam iubes et proba num kubectl recte laborat.

Configurare kube-mando, et effingo fasciculum config expressum ad systema Linux in Fenestra. Directorium hic est C:/user/.kube/config. Deinde configurare in vscode.

VSCode

Download client-go localiter, tum obturaculum in codice cursorem obturaculum-in in vscode depone:

Deinde cstrl+ amoveo+p, ingredere in vscode quaerendi lineam, et obturaculum-in dependentiis institue. Quaero Ite: install/renovatio instrumenta

Hoc si fiat, necesse est ut ambitus variabiles. Quattuor sequentes variabiles ambitus constitue, ubi go_path est indicem ubi codicem ire vis currere repositum est, et go_root est indicis ubi ire downloaded.

Compesce viam.

Hoc tempore, conare GO download: instrumenta renovare iterum inaugurare, et felix erit.

Post prospere institutionem, clientem institue vade in gopath presul

  1. go get k8s.io/client-go@v0.23.1
  2. go get k8s.io/apimachinery@v0.23.1
  3. #使用 go mod tidy 确保所有依赖项已被正确下载并添加到项目中:
  4. go mod tidy
  5. go run main.go

Inventa est autem operatio valuitque;