root@ubuntu:~/kubernetes-operator# source ~/kata/go_source root@ubuntu:~/kubernetes-operator# make images mkdir -p output GO111MODULE=on GOPROXY=https://mirrors.aliyun.com/goproxy/ GOOS=linux GOARCH=amd64 go build -ldflags "" -o output/ansibleinit cmd/installer/ssh/ansibleinit.go go: finding module for package k8s.io/client-go/rest go: downloading github.com/spf13/viper v1.4.0 go: downloading k8s.io/apimachinery v0.0.0-20190717022731-0bb8574e0887 go: downloading github.com/fsnotify/fsnotify v1.4.7 go: downloading github.com/hashicorp/hcl v1.0.0 go: downloading github.com/mitchellh/mapstructure v1.1.2 go: downloading github.com/pelletier/go-toml v1.2.0 go: downloading github.com/spf13/jwalterweatherman v1.0.0 go: downloading github.com/magiconair/properties v1.8.0 go: downloading github.com/spf13/cast v1.3.0 go: downloading golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f go: downloading github.com/spf13/afero v1.1.2 go: downloading k8s.io/klog v0.3.1 go: downloading github.com/gogo/protobuf v1.2.1 go: downloading github.com/json-iterator/go v1.1.6 go: downloading gopkg.in/yaml.v2 v2.2.2 go: downloading golang.org/x/net v0.0.0-20190613194153-d28f0bde5980 cmd/installer/ssh/ansibleinit.go:39:2: module k8s.io/client-go@latest found (v1.5.2), but does not contain package k8s.io/client-go/rest Makefile:24: recipe for target 'images' failed make: *** [images] Error 1 root@ubuntu:~/kubernetes-operator# ls ansible build cmd configs deploy doc go.mod go.sum images LICENSE main.go Makefile output pkg README.md scripts test root@ubuntu:~/kubernetes-operator# grep client-go go.mod root@ubuntu:~/kubernetes-operator# grep client-go go.sum k8s.io/client-go v1.5.2 h1:JOxmv4FxrCIOS54kAABbN8/hA9jqGpns+Zc6soNgd8U= root@ubuntu:~/kubernetes-operator# make images mkdir -p output GO111MODULE=on GOPROXY=https://mirrors.aliyun.com/goproxy/ GOOS=linux GOARCH=amd64 go build -ldflags "" -o output/ansibleinit cmd/installer/ssh/ansibleinit.go go: finding module for package k8s.io/client-go/rest cmd/installer/ssh/ansibleinit.go:39:2: module k8s.io/client-go@latest found (v1.5.2), but does not contain package k8s.io/client-go/rest Makefile:24: recipe for target 'images' failed make: *** [images] Error 1 root@ubuntu:~/kubernetes-operator# go get k8s.io/client-go/rest go get k8s.io/client-go/rest: module k8s.io/client-go@upgrade found (v1.5.2), but does not contain package k8s.io/client-go/rest
更改Makefile,不需要go proxy
images: mkdir -p output GO111MODULE=on GOOS=$(PLATFORM) GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o output/ansibleinit $(AnsibleinitPath) #GO111MODULE=on GOPROXY=https://mirrors.aliyun.com/goproxy/ GOOS=$(PLATFORM) GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o output/ansibleinit $(AnsibleinitPath) docker build --no-cache -f build/ansible/Dockerfile -t ansibleinit . GO111MODULE=on GOPROXY=https://mirrors.aliyun.com/goproxy/ GOOS=$(PLATFORM) GOARCH=arm64 go build -ldflags "$(LDFLAGS)" -o output/kubernetes-operator $(OperatorPath) docker build --no-cache -f build/kube-operator/Dockerfile -t kubernetes-operator . @rm -rf output
更改client版本
root@ubuntu:~/kubernetes-operator# go mod edit -require="k8s.io/client-go@kubernetes-1.16.1"
root@ubuntu:~/kubernetes-operator# make images mkdir -p output GO111MODULE=on GOOS=linux GOARCH=arm64 go build -ldflags "" -o output/ansibleinit cmd/installer/ssh/ansibleinit.go go: downloading github.com/spf13/viper v1.4.0 go: downloading k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655 go: downloading k8s.io/client-go v0.0.0-20191003000419-f68efa97b39e go: downloading github.com/pkg/errors v0.8.1 go: downloading github.com/pelletier/go-toml v1.2.0 go: downloading github.com/fsnotify/fsnotify v1.4.7 go: downloading github.com/hashicorp/hcl v1.0.0 go: downloading github.com/magiconair/properties v1.8.0 go: downloading github.com/spf13/afero v1.2.2 go: downloading github.com/mitchellh/mapstructure v1.1.2 go: downloading golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e go: downloading github.com/spf13/cast v1.3.0 go: downloading golang.org/x/text v0.3.6 go: downloading github.com/spf13/jwalterweatherman v1.0.0 go: downloading github.com/spf13/pflag v1.0.5 go: downloading gopkg.in/yaml.v2 v2.4.0 go: downloading k8s.io/klog v0.4.0 go: downloading github.com/gogo/protobuf v1.3.2 go: downloading github.com/modern-go/reflect2 v1.0.1 go: downloading github.com/json-iterator/go v1.1.7 go: downloading sigs.k8s.io/yaml v1.1.0 go: downloading github.com/google/gofuzz v1.2.0 go: downloading gopkg.in/inf.v0 v0.9.1 go: downloading golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go: downloading github.com/davecgh/go-spew v1.1.1 go: downloading golang.org/x/time v0.0.0-20191024005414-555d28b269f0 go: downloading k8s.io/utils v0.0.0-20190801114015-581e00157fb1 go: downloading golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a go: downloading golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 go: downloading golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b #GO111MODULE=on GOPROXY=https://mirrors.aliyun.com/goproxy/ GOOS=linux GOARCH=arm64 go build -ldflags "" -o output/ansibleinit cmd/installer/ssh/ansibleinit.go docker build --no-cache -f build/ansible/Dockerfile -t ansibleinit . Sending build context to Docker daemon 61.98MB Step 1/10 : FROM golang:1.12-alpine 1.12-alpine: Pulling from library/golang 8fa90b21c985: Already exists fa3b0fa9a238: Pulling fs layer 583d88f01427: Pulling fs layer 269d86263214: Pulling fs layer
docker build --no-cache -f build/kube-operator/Dockerfile -t kubernetes-operator . Sending build context to Docker daemon 62.11MB Error response from daemon: Dockerfile parse error line 4: unknown instruction: MKDIR Makefile:24: recipe for target 'images' failed make: *** [images] Error 1 root@ubuntu:~/kubernetes-operator#
有mkdir命令
root@ubuntu:~/kubernetes-operator# docker run -it -name golang golang:1.12-alpine unknown shorthand flag: 'n' in -name See 'docker run --help'. root@ubuntu:~/kubernetes-operator# docker run -it --name golang golang:1.12-alpine /go # mkdir go /go # ls bin go src /go # go version go version go1.12.17 linux/arm64 /go # exit root@ubuntu:~/kubernetes-operator#
加上
RUN mkdir -p /home/kubernetes-operator/logs && mkdir /home/kubernetes-operator/configs ADD ./output/kubernetes-operator /home/kubernetes-operator ADD ./build/operator/control.sh /home/kubernetes-operator && chmod +x /home/kubernetes-operator/control.sh ADD ./configs/kube-operator /home/kubernetes-operator/configs WORKDIR /home/kubernetes-operator ENTRYPOINT ["control.sh","start"]
Step 4/7 : ADD ./build/kube-operator/control.sh /home/kubernetes-operator && chmod +x /home/kubernetes-operator/control.sh ADD failed: stat /var/lib/docker/tmp/docker-builder503436960/home/kubernetes-operator: no such file or directory Makefile:24: recipe for target 'images' failed
更改dockerfile
FROM golang:1.12-alpine RUN mkdir -p /home/kubernetes-operator/logs && mkdir /home/kubernetes-operator/configs ADD ./output/kubernetes-operator /home/kubernetes-operator ADD ./build/kube-operator/control.sh /home/kubernetes-operator RUN chmod +x /home/kubernetes-operator/control.sh ADD ./configs/kube-operator /home/kubernetes-operator/configs WORKDIR /home/kubernetes-operator ENTRYPOINT ["control.sh","start"]
root@ubuntu:~/kubernetes-operator# kubectl create -f deploy/ namespace/ecs-system created customresourcedefinition.apiextensions.k8s.io/kubernetesclusters.ecs.yun.com created deployment.apps/kubernetes-operator created clusterrole.rbac.authorization.k8s.io/kubernetes-operator created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-operator created serviceaccount/kubernetes-operator created root@ubuntu:~/kubernetes-operator# kubectl get crd NAME CREATED AT bgpconfigurations.crd.projectcalico.org 2021-08-04T02:31:11Z bgppeers.crd.projectcalico.org 2021-08-04T02:31:11Z blockaffinities.crd.projectcalico.org 2021-08-04T02:31:11Z clusterinformations.crd.projectcalico.org 2021-08-04T02:31:11Z felixconfigurations.crd.projectcalico.org 2021-08-04T02:31:11Z foos.samplecontroller.k8s.io 2021-07-09T10:35:32Z globalnetworkpolicies.crd.projectcalico.org 2021-08-04T02:31:11Z globalnetworksets.crd.projectcalico.org 2021-08-04T02:31:11Z hostendpoints.crd.projectcalico.org 2021-08-04T02:31:11Z ipamblocks.crd.projectcalico.org 2021-08-04T02:31:11Z ipamconfigs.crd.projectcalico.org 2021-08-04T02:31:11Z ipamhandles.crd.projectcalico.org 2021-08-04T02:31:11Z ippools.crd.projectcalico.org 2021-08-04T02:31:11Z kubecontrollersconfigurations.crd.projectcalico.org 2021-08-04T02:31:11Z kubernetesclusters.ecs.yun.com 2021-08-10T06:50:23Z networkpolicies.crd.projectcalico.org 2021-08-04T02:31:11Z networksets.crd.projectcalico.org 2021-08-04T02:31:11Z podgroups.scheduling.incubator.k8s.io 2021-07-05T06:53:38Z podgroups.scheduling.sigs.dev 2021-07-05T06:53:38Z queues.scheduling.incubator.k8s.io 2021-07-05T06:53:38Z queues.scheduling.sigs.dev 2021-07-05T06:53:38Z virtualmachines.cloudnative.tw 2021-07-08T07:00:28Z root@ubuntu:~/kubernetes-operator# kubectl get crd | grep kubernetesclusters kubernetesclusters.ecs.yun.com 2021-08-10T06:50:23Z root@ubuntu:~/kubernetes-operator#
root@ubuntu:~/kubernetes-operator# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default apache-app-84f76964b5-fgsc7 1/1 Running 0 13h default apache-app-84f76964b5-kt5cx 1/1 Running 0 4d19h default apache-app-84f76964b5-mmmsc 1/1 Terminating 0 4d19h default busybox 1/1 Terminating 274 12d default example-foo-54dc4db9fc-42jz6 1/1 Terminating 0 10d default example-foo-54dc4db9fc-fmsqn 1/1 Running 0 13h default nginx-app-56b5bb67cc-mkfct 1/1 Running 0 13h default nginx-app-56b5bb67cc-s9jtk 1/1 Running 0 4d19h default nginx-app-56b5bb67cc-vkblw 1/1 Terminating 0 4d19h default web2-7cdf5dffb-26xrn 1/1 Running 0 6d3h default web3-c9654466d-xwb5j 1/1 Running 0 6d3h ecs-system kubernetes-operator-597c68d6f4-csznd 0/1 InvalidImageName 0 21s ecs-system kubernetes-operator-597c68d6f4-jr2m8 0/1 InvalidImageName 0 21s ecs-system kubernetes-operator-597c68d6f4-mphvh 0/1 InvalidImageName 0 21s
需要更改deploy 镜像
root@ubuntu:~/kubernetes-operator/deploy# cat kube-operator.yaml apiVersion: apps/v1 kind: Deployment metadata: name: kubernetes-operator namespace: ecs-system spec: replicas: 3 selector: matchLabels: name: kubernetes-operator template: metadata: labels: name: kubernetes-operator spec: serviceAccountName: kubernetes-operator containers: - name: kubernetes-operator # Replace this with the built image name image: REPLACE_IMAGE imagePullPolicy: Always env: - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OPERATOR_NAME value: "kubernetes-operator"
root@ubuntu:~/kubernetes-operator# go mod edit -require="k8s.io/client-go@kubernetes-1.16.1" root@ubuntu:~/kubernetes-operator# go clean --modcache root@ubuntu:~/kubernetes-operator# make images mkdir -p output GO111MODULE=on GOPROXY=https://mirrors.aliyun.com/goproxy/ GOOS=linux GOARCH=arm64 go build -ldflags "" -o output/ansibleinit cmd/installer/ssh/ansibleinit.go
一、下载go-client包
1 $ go get -u -v k8s.io/client-go/... 因
为了确认下载的确在进行,加上了-u和-v,可以看见具体下载的过程。 下载完成后,
对照官方GitHub中go-client和执行下面的操作:
cd $GOPATH/src/k8s.io/client-go $ git checkout v9.0.0 #这里要根据版本对照表,找出和自己的Kubernetes集群对应的版本