kubernetes-operator

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集群对应的版本

原文地址:https://www.cnblogs.com/dream397/p/15123104.html