redis-operator

command
v0.0.0-...-fc21188 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2020 License: Apache-2.0 Imports: 6 Imported by: 0

README

Redis Operator under CRD and API extensions

Demo

Step 1st

[vagrant@rookdev-172-17-4-59 redis-operator]$ kubectl create -f redis-crd.yaml 
customresourcedefinition "clusters.example.com" created
customresourcedefinition "redises.example.com" created
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl get crd
NAME                           AGE
clusters.example.com           4h
redises.example.com            4h

Step 2nd

[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl create -f redis-operator.yaml 
namespace "example-system" created
clusterrole "my-redis-operator-example" created
serviceaccount "redis-operator" created
clusterrolebinding "redis-operator" created
deployment "redis-operator" created
service "redis-operator" created
[vagrant@rookdev-172-17-4-59 redis-operator]$ kubectl get ns
NAME             STATUS    AGE
default          Active    38d
example-system   Active    1m
kube-public      Active    38d
kube-system      Active    38d
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl get clusterrole my-redis-operator-example
NAME                        AGE
my-redis-operator-example   1h
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl get sa -n example-system
NAME             SECRETS   AGE
default          1         1h
redis-operator   1         1h
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl get clusterrolebindings/redis-operator -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: 2018-01-25T10:43:19Z
  name: redis-operator
  resourceVersion: "2004619"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/redis-operator
  uid: 8ef7ab0d-01bc-11e8-a011-525400224e72
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: my-redis-operator-example
subjects:
- kind: ServiceAccount
  name: redis-operator
  namespace: example-system
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl -n example-system get deploy
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
redis-operator   1         1         1            1           1h
[vagrant@rookdev-172-17-4-63 ~]$ kubectl --namespace example-system get pods -o wide
NAME                              READY     STATUS    RESTARTS   AGE       IP             NODE
redis-operator-75d95bf5b4-vfs4k   1/1       Running   0          1m        10.244.2.187   rookdev-172-17-4-61
[vagrant@rookdev-172-17-4-63 ~]$ kubectl --namespace example-system logs redis-operator-75d95bf5b4-vfs4k
I0125 10:45:31.278351       1 controller.go:154] Setting up event handlers
time="2018-01-25T10:45:31Z" level=info msg="Starting controller" pkg=controller
I0125 10:45:31.280089       1 controller.go:229] Waiting for informer caches to sync
time="2018-01-25T10:45:32Z" level=info msg="Sync completed" pkg=controller
I0125 10:45:32.085241       1 controller.go:235] Starting workers
I0125 10:45:32.085261       1 controller.go:241] Started workers
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl -n example-system get svc                       
NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)     AGE
redis-operator   ClusterIP   None         <none>        10002/TCP   1h

Step 3rd

ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl create -f redis-provision-4or3_2.yaml 
cluster "demo-redis-sentinels" created
ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl get pods -o wide
NAME                                    READY     STATUS    RESTARTS   AGE       IP             NODE
demo-redis-sentinels-0                  1/1       Running   0          1m        10.244.3.208   rookdev-172-17-4-63
demo-redis-sentinels-1                  1/1       Running   0          1m        10.244.2.190   rookdev-172-17-4-61
demo-redis-sentinels-549fcdccb4-45svm   1/1       Running   0          1m        10.244.2.189   rookdev-172-17-4-61
demo-redis-sentinels-549fcdccb4-74kb4   1/1       Running   0          1m        10.244.3.209   rookdev-172-17-4-63
demo-redis-sentinels-549fcdccb4-flw9t   1/1       Running   0          1m        10.244.2.188   rookdev-172-17-4-61

Step 4th

ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl exec -ti demo-redis-sentinels-0 -- redis-cli INFO REPLICATION
# Replication
role:master
connected_slaves:1
slave0:ip=10.244.2.190,port=6379,state=online,offset=52357,lag=0
master_replid:05dcba4bb566aacc7ab394ce9e8436861ba0e374
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:52661
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:52661
ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl exec -ti demo-redis-sentinels-1 -- redis-cli INFO REPLICATION
# Replication
role:slave
master_host:10.244.3.208
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:54955
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:05dcba4bb566aacc7ab394ce9e8436861ba0e374
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:54955
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:54955
ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl exec -ti demo-redis-sentinels-549fcdccb4-45svm -- redis-cli -p 26379 SENTINEL masters
1)  1) "name"
    2) "demo-redis-sentinels"
    3) "ip"
    4) "10.244.3.208"
    5) "port"
    6) "6379"
    7) "runid"
    8) "e5a7b7fabfd90c74037e2c6129ce1c71795560b0"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "663"
   19) "last-ping-reply"
   20) "663"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "2050"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "333268"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "1"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"
ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl exec -ti demo-redis-sentinels-549fcdccb4-74kb4 -- redis-cli -p 26379 SENTINEL master demo-redis-sentinels
 1) "name"
 2) "demo-redis-sentinels"
 3) "ip"
 4) "10.244.3.208"
 5) "port"
 6) "6379"
 7) "runid"
 8) "e5a7b7fabfd90c74037e2c6129ce1c71795560b0"
 9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "798"
19) "last-ping-reply"
20) "798"
21) "down-after-milliseconds"
22) "60000"
23) "info-refresh"
24) "1720"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "443411"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "1"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"
ubuntu@rookdev-172-17-4-61:/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator$ kubectl exec -ti demo-redis-sentinels-549fcdccb4-flw9t -- redis-cli -p 26379 SENTINEL slaves demo-redis-sentinels
1)  1) "name"
    2) "10.244.2.190:6379"
    3) "ip"
    4) "10.244.2.190"
    5) "port"
    6) "6379"
    7) "runid"
    8) "6fa0bd157fd95a3f7862323a90d220c37cbb2834"
    9) "flags"
   10) "slave"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "259"
   19) "last-ping-reply"
   20) "259"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "1174"
   25) "role-reported"
   26) "slave"
   27) "role-reported-time"
   28) "513155"
   29) "master-link-down-time"
   30) "0"
   31) "master-link-status"
   32) "ok"
   33) "master-host"
   34) "10.244.3.208"
   35) "master-port"
   36) "6379"
   37) "slave-priority"
   38) "100"
   39) "slave-repl-offset"
   40) "117529"

Development

Kubernetes API extensions code-generator

./k8s-api-ext-code-generator.md

Generated

[vagrant@kubedev-172-17-4-59 redis-operator]$ ls pkg/apis pkg/client     
pkg/apis:
example.com

pkg/client:
clientset  informers  listers
go-bindata code generator

Refer to https://github.com/jteeuwen/go-bindata

Generate

[vagrant@kubedev-172-17-4-59 redis-operator]$ make go-bindata-spec

Generated

[vagrant@kubedev-172-17-4-59 redis-operator]$ ls pkg/spec/artifact/             
artifacts.go
Protobuf and gRPC code generater

Protobuf: refer to https://github.com/google/protobuf and https://github.com/golang/protobuf

gRPC: refer to https://github.com/grpc/grpc-go and https://github.com/grpc-ecosystem/grpc-gateway

Generate

[vagrant@kubedev-172-17-4-59 redis-operator]$ make protoc-grpc

Generated

[vagrant@kubedev-172-17-4-59 redis-operator]$ ls pb/*.go
pb/message.pb.go  pb/service.pb.go  pb/service.pb.gw.go
Build or install
[vagrant@kubedev-172-17-4-59 redis-operator]$ GOPATH=/Users/fanhongling/Downloads/workspace:$HOME/go make go-install
### snippets ###
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/operator
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/server
github.com/tangfeixiong/go-to-kubernetes/redis-operator/cmd
github.com/tangfeixiong/go-to-kubernetes/redis-operator
[vagrant@kubedev-172-17-4-59 redis-operator]$ ls -lh $GOPATH/bin/redis-operator 
-rwxr-xr-x. 1 vagrant vagrant 66M Jan  2 22:40 /Users/fanhongling/Downloads/workspace/bin/redis-operator
[vagrant@kubedev-172-17-4-59 redis-operator]$ GOPATH=$GOPATH:$HOME/go make go-build
runtime/internal/sys
runtime/internal/atomic
runtime
errors
internal/race
sync/atomic
sync
io
internal/cpu
math
syscall
time
internal/poll
os
unicode/utf8
strconv
unicode
reflect
fmt
sort
flag
bytes
bufio
strings
encoding/csv
context
internal/nettrace
internal/singleflight
math/rand
net
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/spf13/pflag
### snippets ###
github.com/tangfeixiong/go-to-kubernetes/redis-operator
[vagrant@kubedev-172-17-4-59 redis-operator]$ bin/redis-operator 
bin/redis-operator flag redefined: log_dir
panic: bin/redis-operator flag redefined: log_dir

goroutine 1 [running]:
flag.(*FlagSet).Var(0xc420054060, 0x2a03ce0, 0xc42000f3b0, 0x1c3b807, 0x7, 0x1c69c37, 0x2f)
	/opt/go/src/flag/flag.go:793 +0x5e1
flag.(*FlagSet).StringVar(0xc420054060, 0xc42000f3b0, 0x1c3b807, 0x7, 0x0, 0x0, 0x1c69c37, 0x2f)
	/opt/go/src/flag/flag.go:696 +0x8b
flag.(*FlagSet).String(0xc420054060, 0x1c3b807, 0x7, 0x0, 0x0, 0x1c69c37, 0x2f, 0xc42000f300)
	/opt/go/src/flag/flag.go:709 +0x8b
flag.String(0x1c3b807, 0x7, 0x0, 0x0, 0x1c69c37, 0x2f, 0xc42000f0c0)
	/opt/go/src/flag/flag.go:716 +0x69
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/jw-s/redis-operator/vendor/github.com/golang/glog.init()
	/Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/jw-s/redis-operator/vendor/github.com/golang/glog/glog_file.go:41 +0x14a
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/jw-s/redis-operator/pkg/generated/clientset.init()
	<autogenerated>:1 +0x44
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/operator.init()
	<autogenerated>:1 +0x66
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/server.init()
	<autogenerated>:1 +0xbb
github.com/tangfeixiong/go-to-kubernetes/redis-operator/cmd.init()
	<autogenerated>:1 +0x62
main.init()
	<autogenerated>:1 +0x5d
[vagrant@kubedev-172-17-4-59 redis-operator]$ find ../vendor -name glog
../vendor/github.com/golang/glog
../vendor/github.com/jw-s/redis-operator/vendor/github.com/golang/glog
../vendor/k8s.io/heapster/vendor/github.com/golang/glog
../vendor/k8s.io/kubernetes/vendor/github.com/golang/glog
[vagrant@kubedev-172-17-4-59 redis-operator]$ rm -rf ../vendor/github.com/jw-s/redis-operator/vendor/github.com/golang/glog/ ../vendor/k8s.io/heapster/vendor/github.com/golang/glog/ ../vendor/k8s.io/kubernetes/vendor/github.com/golang/glog/
[vagrant@kubedev-172-17-4-59 redis-operator]$ docker build --no-cache --force-rm -t docker.io/tangfeixiong/redis-operator:latest -f Dockerfile.busybox ./
Sending build context to Docker daemon 41.85 MB
Step 1/7 : FROM busybox
Trying to pull repository docker.io/library/busybox ... 
sha256:bbc3a03235220b170ba48a157dd097dd1379299370e1ed99ce976df0355d24f0: Pulling from docker.io/library/busybox
0ffadd58f2a6: Pull complete 
Digest: sha256:bbc3a03235220b170ba48a157dd097dd1379299370e1ed99ce976df0355d24f0
Status: Downloaded newer image for docker.io/busybox:latest
 ---> 6ad733544a63
Step 2/7 : LABEL "maintainer" "tangfeixiong <tangfx128@gmail.com>" "project" "https://github.com/tangfeixiong/go-to-kubernetes" "name" "redis-operator" "version" "0.1" "created-by" '{"go":"v1.9.2","kubernetes":"v1.8","docker":"1.13"}'
 ---> Running in 0806f6be1bb2
 ---> df5131223310
Removing intermediate container 0806f6be1bb2
Step 3/7 : COPY bin/redis-operator /
 ---> 1a64689e5b9f
Removing intermediate container cc9da498955d
Step 4/7 : ENV DOCKER_API_VERSION '1.12' DOCKER_CONFIG_JSON '{"auths": {"localhost:5000": {"auth": "","email": ""}}}' REGISTRY_CERTS_JSON '{"localhost:5000": {"ca_base64": "", "crt_base64": "", "key_base64": ""}}'
 ---> Running in efaf0df895aa
 ---> 86f61d43660c
Removing intermediate container efaf0df895aa
Step 5/7 : EXPOSE 10002 10001
 ---> Running in e0ef44783ebb
 ---> e1751cc19ad2
Removing intermediate container e0ef44783ebb
Step 6/7 : ENTRYPOINT /redis-operator serve
 ---> Running in 2d53e4470be6
 ---> 79b5a7da1a98
Removing intermediate container 2d53e4470be6
Step 7/7 : CMD -v 2 --logtostderr=true
 ---> Running in 0832f0434fd6
 ---> e08845d7fedc
Removing intermediate container 0832f0434fd6
Successfully built e08845d7fedc
[vagrant@kubedev-172-17-4-59 redis-operator]$ docker images tangfeixiong/redis-operator
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
docker.io/tangfeixiong/redis-operator   latest              e08845d7fedc        19 minutes ago      42.8 MB
ubuntu@rookdev-172-17-4-61:/Users/fanhongling/go/src/golang.org/x/net$ ssh vagrant@172.17.4.59 "docker save docker.io/tangfeixiong/redis-operator" | docker load
vagrant@172.17.4.59's password: 
871bc905972c: Loading layer [==================================================>] 29.33 MB/29.33 MB
The image tangfeixiong/redis-operator:latest already exists, renaming the old one with ID sha256:e08845d7fedcc882cd2b1cff4d7a9d9a38b7a5a082ab7e6237f8c2644c28c619 to empty string
Loaded image: tangfeixiong/redis-operator:latest
[vagrant@rookdev-172-17-4-63 ~]$ ssh vagrant@172.17.4.59 "docker save docker.io/tangfeixiong/redis-operator" | docker load
vagrant@172.17.4.59's password: 
871bc905972c: Loading layer [==================================================>] 29.33 MB/29.33 MB
The image docker.io/tangfeixiong/redis-operator:latest already exists, renaming the old one with ID sha256:e08845d7fedcc882cd2b1cff4d7a9d9a38b7a5a082ab7e6237f8c2644c28c619 to empty string
Loaded image: docker.io/tangfeixiong/redis-operator:latest
[vagrant@kubedev-172-17-4-59 redis-operator]$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: tangfeixiong
Password: 
Login Succeeded
[vagrant@kubedev-172-17-4-59 redis-operator]$ docker push docker.io/tangfeixiong/redis-operator
The push refers to a repository [docker.io/tangfeixiong/redis-operator]
871bc905972c: Pushed 
0271b8eebde3: Layer already exists 
latest: digest: sha256:8cc09af9be104aa08a3a5f01606135c15de841901f36fce4fc6f549adb1c7c7b size: 738
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl create -f redis-operator.yaml 
namespace "example-system" created
clusterrole "redis-operator-example" created
serviceaccount "redis-operator" created
clusterrolebinding "redis-operator" created
deployment "redis-operator" created
service "redis-operator" created
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl -n example-system get pods -o wide
NAME                             READY     STATUS    RESTARTS   AGE       IP            NODE
redis-operator-d47d9dbf6-ppmfm   1/1       Running   0          10s       10.244.2.71   rookdev-172-17-4-61
[vagrant@kubedev-172-17-4-59 redis-operator]$ ./runtests_curl.sh create-crd
{"recipe":{"name":"redises","group":"example.com","version":"v1alpha1","plural":"redises","singular":"redis","kind":"Redis"}}
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl get crd redises.example.com
NAME                  AGE
redises.example.com   44s

docker

[vagrant@kubedev-172-17-4-59 redis-operator]$ GOPATH=/Users/fanhongling/Downloads/workspace:/Users/fanhongling/go make docker-push
runtime/internal/sys
runtime/internal/atomic
runtime
errors
internal/race
sync/atomic
sync
io
internal/cpu
math
syscall
time
internal/poll
os
unicode/utf8
strconv
unicode
reflect
fmt
sort
flag
bytes
bufio
strings
encoding/csv
context
internal/nettrace
internal/singleflight
math/rand
net
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/spf13/pflag
path/filepath
io/ioutil
net/url
text/template/parse
text/template
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/spf13/cobra
hash
crypto
crypto/sha1
container/list
crypto/subtle
crypto/cipher
crypto/internal/cipherhw
crypto/aes
encoding/binary
crypto/des
math/bits
math/big
crypto/elliptic
crypto/sha512
encoding/asn1
crypto/ecdsa
crypto/hmac
crypto/md5
internal/syscall/unix
crypto/rand
crypto/rc4
crypto/rsa
crypto/sha256
crypto/dsa
crypto/x509/pkix
encoding/hex
encoding/base64
encoding/pem
crypto/x509
vendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20
vendor/golang_org/x/crypto/poly1305
vendor/golang_org/x/crypto/chacha20poly1305
vendor/golang_org/x/crypto/curve25519
crypto/tls
log
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-redis/redis/internal
hash/crc32
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-redis/redis/internal/consistenthash
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-redis/redis/internal/hashtag
encoding
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-redis/redis/internal/proto
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-redis/redis/internal/pool
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-redis/redis
os/user
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/glog
unicode/utf16
encoding/json
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/gogo/protobuf/proto
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/gogo/protobuf/sortkeys
compress/flate
compress/gzip
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/mailru/easyjson/jlexer
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/mailru/easyjson/buffer
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/mailru/easyjson/jwriter
regexp/syntax
regexp
github.com/tangfeixiong/go-to-kubernetes/vendor/gopkg.in/yaml.v2
vendor/golang_org/x/net/http2/hpack
vendor/golang_org/x/text/transform
vendor/golang_org/x/text/unicode/bidi
vendor/golang_org/x/text/secure/bidirule
vendor/golang_org/x/text/unicode/norm
vendor/golang_org/x/net/idna
vendor/golang_org/x/net/lex/httplex
vendor/golang_org/x/net/proxy
mime
mime/quotedprintable
net/textproto
mime/multipart
net/http/httptrace
net/http/internal
path
net/http
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-openapi/swag
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-openapi/jsonpointer
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/PuerkitoBio/urlesc
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/text/transform
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/text/unicode/bidi
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/text/secure/bidirule
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/text/unicode/norm
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/idna
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/text/width
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/PuerkitoBio/purell
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-openapi/jsonreference
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-openapi/spec
github.com/tangfeixiong/go-to-kubernetes/vendor/gopkg.in/inf.v0
hash/adler32
compress/zlib
encoding/xml
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/emicklei/go-restful/log
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/emicklei/go-restful
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kube-openapi/pkg/common
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/google/gofuzz
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/conversion
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/selection
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/fields
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/sets
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/errors
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/validation/field
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/validation
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/labels
go/token
go/scanner
go/ast
go/doc
go/parser
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/conversion/queryparams
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/types
runtime/debug
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/http2/hpack
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/lex/httplex
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/http2
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/net
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/runtime
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/wait
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/watch
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/core/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/apps/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/extensions/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/json
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/ghodss/yaml
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/json-iterator/go
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/framer
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/yaml
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/json
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/api/errors
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/version
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/pkg/version
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/rest/watch
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/clientcmd/api
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/metrics
net/http/httputil
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/gregjones/httpcache
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/google/btree
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/peterbourgon/diskv
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/gregjones/httpcache/diskcache
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/transport
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/util/cert
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/juju/ratelimit
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/clock
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/util/integer
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/util/flowcontrol
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/rest
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/emicklei/go-restful-swagger12
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/proto
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/ptypes/any
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/ptypes/duration
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/ptypes/timestamp
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/ptypes
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/googleapis/gnostic/extensions
os/exec
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/googleapis/gnostic/compiler
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/googleapis/gnostic/OpenAPIv2
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/api/equality
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/davecgh/go-spew/spew
text/tabwriter
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/diff
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/conversion/unstructured
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/api/meta
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/apps/v1beta2
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/authentication/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/authentication/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/authorization/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/authorization/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/autoscaling/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/autoscaling/v2beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/batch/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/batch/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/batch/v2alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/certificates/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/networking/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/policy/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/rbac/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/rbac/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/rbac/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/scheduling/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/settings/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/storage/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/api/storage/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/scheme
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/discovery
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/reference
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/core/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/networking/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/kubernetes
container/heap
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/context
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/hashicorp/golang-lru/simplelru
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/hashicorp/golang-lru
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/cache
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/pager
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/cache
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/util/version
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/operator-kit
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/coreos/go-systemd/journal
log/syslog
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/coreos/pkg/capnslog
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/apis/rook.io
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/model
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/apis/rook.io/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/client/clientset/versioned/scheme
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/client/clientset/versioned/typed/rook/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/client/clientset/versioned
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/util/exec
database/sql/driver
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/google/uuid
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/util/sys
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/clusterd
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/k8sutil
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/daemon/agent/flexvolume/attachment
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/daemon/ceph/client
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/go-ini/ini
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/util
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/daemon/ceph/mon
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apimachinery
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apimachinery/registered
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/apimachinery/announced
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/api
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/api/helper
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/api/v1/helper
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/kubelet/apis
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/cluster/ceph/mon
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/rook/client
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/cluster/api
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/cluster/ceph/mgr
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/cluster/ceph/osd
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/daemon/ceph/mds
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/pool
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/file/ceph
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/file
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/daemon/ceph/rgw
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/object/ceph
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/object
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/cluster
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/apis/componentconfig
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/api/v1/helper/qos
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/kubelet/qos
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/kubelet/types
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/master/ports
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/util/pointer
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/agent
encoding/gob
html
html/template
net/rpc
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/daemon/agent/flexvolume
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/groupcache/lru
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/mergepatch
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/third_party/forked/golang/json
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/strategicpatch
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/record
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/provisioner/controller/leaderelection/resourcelock
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/provisioner/controller/leaderelection
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/pborman/uuid
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/uuid
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/kubernetes/pkg/util/goroutinemap
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/provisioner/controller
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator/provisioner
os/signal
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/rook/rook/pkg/operator
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/ptypes/struct
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/jsonpb
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/grpc-ecosystem/grpc-gateway/utilities
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/internal/timeseries
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/trace
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/codes
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/credentials
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/grpclog
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/internal
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/keepalive
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/metadata
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/naming
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/peer
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/stats
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/genproto/googleapis/rpc/status
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/status
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/tap
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc/transport
github.com/tangfeixiong/go-to-kubernetes/vendor/google.golang.org/grpc
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/google/api
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pb
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/apis/example.com
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/apis/example.com/v1
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/clientset/versioned/scheme
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/clientset/versioned/typed/example.com/v1
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/clientset/versioned
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/informers/externalversions/internalinterfaces
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/listers/example.com/v1
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/informers/externalversions/example.com/v1
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/informers/externalversions/example.com
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/client/informers/externalversions
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/sys/unix
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/crypto/ssh/terminal
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/sirupsen/logrus
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/spec/artifact
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/apimachinery/pkg/util/rand
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/spec/deploy
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/spec/sts
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/spec/svc
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/internalinterfaces
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/admissionregistration/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/admissionregistration/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/admissionregistration
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/apps/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/apps/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/apps/v1beta2
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/apps/v1beta2
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/apps
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/autoscaling/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/autoscaling/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/autoscaling/v2beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/autoscaling/v2beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/autoscaling
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/batch/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/batch/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/batch/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/batch/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/batch/v2alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/batch/v2alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/batch
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/certificates/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/certificates/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/certificates
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/core/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/core/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/core
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/extensions/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/extensions/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/extensions
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/networking/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/networking/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/networking
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/policy/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/policy/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/policy
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/rbac/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/rbac/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/rbac/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/rbac/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/rbac/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/rbac/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/rbac
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/scheduling/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/scheduling/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/scheduling
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/settings/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/settings/v1alpha1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/settings
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/storage/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/storage/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/listers/storage/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/storage/v1beta1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers/storage
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/informers
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/util/workqueue
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/controller
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/signals
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/spec/crd
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/howeyc/gopass
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/imdario/mergo
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/auth
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/clientcmd/api/v1
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/clientcmd/api/latest
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/util/homedir
github.com/tangfeixiong/go-to-kubernetes/vendor/k8s.io/client-go/tools/clientcmd
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/operator
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/elazarl/go-bindata-assetfs
github.com/tangfeixiong/go-to-kubernetes/vendor/github.com/gorilla/websocket
github.com/philips/grpc-gateway-example/pkg/ui/data/swagger
github.com/tangfeixiong/go-to-bigdata/nps-wss/pkg/httpfs
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/ui/data/webapp
github.com/tangfeixiong/go-to-kubernetes/vendor/golang.org/x/net/websocket
github.com/tangfeixiong/go-to-kubernetes/redis-operator/pkg/server
github.com/tangfeixiong/go-to-kubernetes/redis-operator/cmd
github.com/tangfeixiong/go-to-kubernetes/redis-operator
#@docker build --no-cache --force-rm -t docker.io/tangfeixiong/redis-operator:latest ./
Sending build context to Docker daemon 29.73 MB
Step 1/7 : FROM busybox
 ---> 6ad733544a63
Step 2/7 : LABEL "maintainer" "tangfeixiong <tangfx128@gmail.com>" "project" "https://github.com/tangfeixiong/go-to-kubernetes" "name" "redis-operator" "version" "0.1" "created-by" '{"go":"v1.9.2","kubernetes":"v1.8","docker":"1.13"}'
 ---> Running in af67cbe01e96
 ---> 483d302a0600
Removing intermediate container af67cbe01e96
Step 3/7 : COPY bin/redis-operator /
 ---> bd8c54d38399
Removing intermediate container 1eba37b4986c
Step 4/7 : ENV DOCKER_API_VERSION '1.12' DOCKER_CONFIG_JSON '{"auths": {"localhost:5000": {"auth": "","email": ""}}}' REGISTRY_CERTS_JSON '{"localhost:5000": {"ca_base64": "", "crt_base64": "", "key_base64": ""}}'
 ---> Running in 6130b9100659
 ---> 444ae0587cbe
Removing intermediate container 6130b9100659
Step 5/7 : EXPOSE 10002 10001
 ---> Running in f2c09bfb4506
 ---> 91f164436295
Removing intermediate container f2c09bfb4506
Step 6/7 : ENTRYPOINT /redis-operator serve
 ---> Running in fa1808f5c4b7
 ---> d76737597435
Removing intermediate container fa1808f5c4b7
Step 7/7 : CMD -v 2 --logtostderr=true
 ---> Running in a975fe908614
 ---> 3c2ea5ba5e44
Removing intermediate container a975fe908614
Successfully built 3c2ea5ba5e44
The push refers to a repository [docker.io/tangfeixiong/redis-operator]
4abf275618e6: Pushed 
0271b8eebde3: Layer already exists 
latest: digest: sha256:644b1223c8a767e1c091fcf621d1356b36b619bc5640bf3ca6cc3f13f75e76bc size: 738
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-0 -- redis-cli INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.244.3.175,port=6379,state=online,offset=154,lag=1
master_replid:33735414e49b41f60af0c06b621db6be3845e0aa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:154
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:154
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-1 -- redis-cli INFO replication
# Replication
role:slave
master_host:10.244.2.137
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:168
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:33735414e49b41f60af0c06b621db6be3845e0aa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:168
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:168
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl scale sts my-redis --replicas=3
statefulset "my-redis" scaled
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-2 -- redis-cli INFO replication
# Replication
role:slave
master_host:10.244.2.137
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:546
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:33735414e49b41f60af0c06b621db6be3845e0aa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:546
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:491
repl_backlog_histlen:56
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-0 -- redis-cli INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.244.3.175,port=6379,state=online,offset=574,lag=1
slave1:ip=10.244.2.138,port=6379,state=online,offset=574,lag=1
master_replid:33735414e49b41f60af0c06b621db6be3845e0aa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:574
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:574
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-0 -- cat redis.conf
appendonly yes
protected-mode no
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-1 -- cat redis.conf
appendonly yes
protected-mode no
slaveof 10.244.2.137 6379
[vagrant@rookdev-172-17-4-63 ~]$ kubectl exec -ti my-redis-2 -- cat redis.conf
appendonly yes
protected-mode no
slaveof 10.244.2.137 6379
[vagrant@kubedev-172-17-4-59 redis-operator]$ kubectl get pods -o wide
NAME                            READY     STATUS    RESTARTS   AGE       IP             NODE
my-redis-0                      1/1       Running   0          22h       10.244.2.137   rookdev-172-17-4-61
my-redis-1                      1/1       Running   0          22h       10.244.3.175   rookdev-172-17-4-63
my-redis-2                      1/1       Running   0          22h       10.244.2.138   rookdev-172-17-4-61
my-redis-cf97f57bc-78fvv        1/1       Running   0          2m        10.244.2.139   rookdev-172-17-4-61
my-redis-cf97f57bc-l62t6        1/1       Running   0          2m        10.244.3.177   rookdev-172-17-4-63
my-redis-cf97f57bc-tc9cj        1/1       Running   0          2m        10.244.3.176   rookdev-172-17-4-63
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti my-redis-cf97f57bc-78fvv -- redis-cli -p 26379 SENTINEL masters 
1)  1) "name"
    2) "my-redis"
    3) "ip"
    4) "10.244.2.137"
    5) "port"
    6) "6379"
    7) "runid"
    8) "a064565f41ccb2f5081150538d2a22bec320865d"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "236"
   19) "last-ping-reply"
   20) "236"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "4459"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "64756"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "2"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti my-redis-cf97f57bc-l62t6 -- redis-cli -p 26379 SENTINEL masters 
1)  1) "name"
    2) "my-redis"
    3) "ip"
    4) "10.244.2.137"
    5) "port"
    6) "6379"
    7) "runid"
    8) "a064565f41ccb2f5081150538d2a22bec320865d"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "549"
   19) "last-ping-reply"
   20) "549"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "283"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "211187"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "2"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti my-redis-cf97f57bc-tc9cj -- redis-cli -p 26379 SENTINEL masters 
1)  1) "name"
    2) "my-redis"
    3) "ip"
    4) "10.244.2.137"
    5) "port"
    6) "6379"
    7) "runid"
    8) "a064565f41ccb2f5081150538d2a22bec320865d"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "802"
   19) "last-ping-reply"
   20) "802"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "9243"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "310591"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "2"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti my-redis-cf97f57bc-78fvv -- cat sentinel.conf
sentinel myid 680d72d916d0833d84800ea59a686426a9754857
sentinel monitor my-redis 10.244.2.137 6379 2
sentinel down-after-milliseconds my-redis 60000
sentinel config-epoch my-redis 0
# Generated by CONFIG REWRITE
port 26379
dir "/data"
sentinel leader-epoch my-redis 0
sentinel known-slave my-redis 10.244.3.175 6379
sentinel known-slave my-redis 10.244.2.138 6379
sentinel known-sentinel my-redis 10.244.3.176 26379 2c958fb556d42a9e78e5c82c26b771ed8887e10b
sentinel known-sentinel my-redis 10.244.3.177 26379 dc88af434430ea5b2b4dc13f302832fc42e6beec
sentinel current-epoch 0
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti my-redis-cf97f57bc-l62t6 -- cat sentinel.conf
sentinel myid dc88af434430ea5b2b4dc13f302832fc42e6beec
sentinel monitor my-redis 10.244.2.137 6379 2
sentinel down-after-milliseconds my-redis 60000
sentinel config-epoch my-redis 0
# Generated by CONFIG REWRITE
port 26379
dir "/data"
sentinel leader-epoch my-redis 0
sentinel known-slave my-redis 10.244.2.138 6379
sentinel known-slave my-redis 10.244.3.175 6379
sentinel known-sentinel my-redis 10.244.3.176 26379 2c958fb556d42a9e78e5c82c26b771ed8887e10b
sentinel known-sentinel my-redis 10.244.2.139 26379 680d72d916d0833d84800ea59a686426a9754857
sentinel current-epoch 0
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti my-redis-cf97f57bc-tc9cj -- cat sentinel.conf
sentinel myid 2c958fb556d42a9e78e5c82c26b771ed8887e10b
sentinel monitor my-redis 10.244.2.137 6379 2
sentinel down-after-milliseconds my-redis 60000
sentinel config-epoch my-redis 0
# Generated by CONFIG REWRITE
port 26379
dir "/data"
sentinel leader-epoch my-redis 0
sentinel known-slave my-redis 10.244.2.138 6379
sentinel known-slave my-redis 10.244.3.175 6379
sentinel known-sentinel my-redis 10.244.2.139 26379 680d72d916d0833d84800ea59a686426a9754857
sentinel known-sentinel my-redis 10.244.3.177 26379 dc88af434430ea5b2b4dc13f302832fc42e6beec
sentinel current-epoch 0
[vagrant@rookdev-172-17-4-63 ~]$ docker run --rm --name=test -ti --entrypoint="/bin/ash" docker.io/redis:4.0-alpine -c "redis-cli -h 10.102.38.21 -p 26379 SENTINEL masters"
1)  1) "name"
    2) "my-redis"
    3) "ip"
    4) "10.244.3.184"
    5) "port"
    6) "6379"
    7) "runid"
    8) "f1c118267716a052b01e66906a7d4339d2d2ebc6"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "226"
   19) "last-ping-reply"
   20) "226"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "1328"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "3374108"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "1"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"
CI/CD
[vagrant@kubedev-172-17-4-59 redis-operator]$ redis-operator serve --kubeconfig --logtostderr --v=5
I0125 08:36:10.463292   26211 controller.go:154] Setting up event handlers
INFO[0000] Starting controller                           pkg=controller
I0125 08:36:10.477105   26211 controller.go:229] Waiting for informer caches to sync
INFO[0000] Sync completed                                pkg=controller
I0125 08:36:10.782018   26211 controller.go:235] Starting workers
I0125 08:36:10.782555   26211 controller.go:241] Started workers
[vagrant@rookdev-172-17-4-63 ~]$ kubectl create -f /Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator/redis-crd.yaml 
customresourcedefinition "clusters.example.com" created
customresourcedefinition "redises.example.com" created
[vagrant@rookdev-172-17-4-63 ~]$ kubectl create -f /Users/fanhongling/Downloads/workspace/src/github.com/tangfeixiong/go-to-kubernetes/redis-operator/redis-provision-4or3_2.yaml 
cluster "demo-redis-sentinels" created
ubuntu@rookdev-172-17-4-61:~$ kubectl get svc -o wide
NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)              AGE       SELECTOR
demo-redis-sentinels      ClusterIP   None            <none>        6379/TCP,16379/TCP   11m       app=redis,component=redis,redis=demo-redis-sentinels
demo-redis-sentinels-ha   ClusterIP   10.109.188.95   <none>        26379/TCP            11m       app=redis,component=sentinel,sentinel=demo-redis-sentinels
kubernetes                ClusterIP   10.96.0.1       <none>        443/TCP              38d       <none>
ubuntu@rookdev-172-17-4-61:~$ kubectl get sts -o wide
NAME                   DESIRED   CURRENT   AGE       CONTAINERS   IMAGES
demo-redis-sentinels   2         2         11m       redis        docker.io/redis:4.0-alpine
ubuntu@rookdev-172-17-4-61:~$ kubectl get deploy -o wide
NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINERS     IMAGES                                     SELECTOR
demo-redis-sentinels   3         3         3            3           11m       sentinel       docker.io/redis:4.0-alpine                 app=redis,component=sentinel,sentinel=demo-redis-sentinels
ubuntu@rookdev-172-17-4-61:~$ kubectl get pods -o wide
NAME                                    READY     STATUS    RESTARTS   AGE       IP             NODE
demo-redis-sentinels-0                  1/1       Running   0          12m       10.244.2.185   rookdev-172-17-4-61
demo-redis-sentinels-1                  1/1       Running   0          11m       10.244.3.206   rookdev-172-17-4-63
demo-redis-sentinels-549fcdccb4-8wdk5   1/1       Running   0          12m       10.244.3.205   rookdev-172-17-4-63
demo-redis-sentinels-549fcdccb4-9cr47   1/1       Running   0          12m       10.244.3.204   rookdev-172-17-4-63
demo-redis-sentinels-549fcdccb4-vrcrp   1/1       Running   0          12m       10.244.2.186   rookdev-172-17-4-61
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti demo-redis-sentinels-1 -- redis-cli INFO REPLICATION
# Replication
role:slave
master_host:10.244.2.185
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:21885
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:38076048dddfb3d3876d0e88fe0c63a1a50d4501
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:21885
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:21885
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti demo-redis-sentinels-0 -- redis-cli INFO REPLICATION
# Replication
role:master
connected_slaves:1
slave0:ip=10.244.3.206,port=6379,state=online,offset=24331,lag=0
master_replid:38076048dddfb3d3876d0e88fe0c63a1a50d4501
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:24331
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:24331
ubuntu@rookdev-172-17-4-61:~$ kubectl exec -ti demo-redis-sentinels-549fcdccb4-8wdk5 -- redis-cli -p 26379 SENTINEL masters
1)  1) "name"
    2) "demo-redis-sentinels"
    3) "ip"
    4) "10.244.2.185"
    5) "port"
    6) "6379"
    7) "runid"
    8) "7c2b0cb2a6661814cd8f09fc1cde6e6a43f25def"
    9) "flags"
   10) "master"
   11) "link-pending-commands"
   12) "0"
   13) "link-refcount"
   14) "1"
   15) "last-ping-sent"
   16) "0"
   17) "last-ok-ping-reply"
   18) "83"
   19) "last-ping-reply"
   20) "83"
   21) "down-after-milliseconds"
   22) "60000"
   23) "info-refresh"
   24) "4367"
   25) "role-reported"
   26) "master"
   27) "role-reported-time"
   28) "345936"
   29) "config-epoch"
   30) "0"
   31) "num-slaves"
   32) "1"
   33) "num-other-sentinels"
   34) "2"
   35) "quorum"
   36) "2"
   37) "failover-timeout"
   38) "180000"
   39) "parallel-syncs"
   40) "1"

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package pb is a generated protocol buffer package.
Package pb is a generated protocol buffer package.
pkg
apis/example.com/v1
Package v1 is the v1 version of the API.
Package v1 is the v1 version of the API.
client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset/versioned/typed/example.com/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL