官方github:https://github.com/alibaba/kt-connect
一、准备环境
所有机器都是:centos 7.5
本地Linux机器:localhost
k8s集群机器:k8s-master-15-81
二、本地Linux安装ktctl
在本地Linux机器操作:
# 切换到root用户 sudo su
mkdir /root/.kube mkdir /root/tools
cd /root/tools/
pip install sshuttle curl -OL https://rdc-incubators.oss-cn-beijing.aliyuncs.com/stable/ktctl_linux_amd64.tar.gz tar -xzvf ktctl_linux_amd64.tar.gz mv ktctl_linux_amd64 /usr/local/bin/ktctl ktctl -h
[root@localhost ~]# ktctl -v
Kubernetes Develope Tools version 0.0.4
这种安装的可能不是最新版,也可以离线下载并编译,下载地址:
https://github.com/alibaba/kt-connect/releases/
但是我尝试编译,报错了
[root@k8s-master-15-81 ~]# cd tools/ [root@k8s-master-15-81 tools]# ll total 1228 drwxr-xr-x 11 root root 4096 Oct 29 09:31 kt-connect-kt-0.0.6 -rw-r--r-- 1 root root 1251777 Oct 29 09:20 kt-connect-kt-0.0.6.zip [root@k8s-master-15-81 tools]# cd kt-connect-kt-0.0.6/ [root@k8s-master-15-81 kt-connect-kt-0.0.6]# ll total 80 drwxr-xr-x 2 root root 4096 Oct 29 09:32 bin drwxr-xr-x 5 root root 4096 Oct 9 19:43 cmd drwxr-xr-x 3 root root 4096 Oct 9 19:43 config drwxr-xr-x 7 root root 4096 Oct 9 19:43 docker drwxr-xr-x 6 root root 4096 Oct 9 19:43 docs -rw-r--r-- 1 root root 1314 Oct 9 19:43 go.mod -rw-r--r-- 1 root root 21123 Oct 9 19:43 go.sum -rw-r--r-- 1 root root 1076 Oct 9 19:43 LICENSE -rw-r--r-- 1 root root 1100 Oct 9 19:43 package.json drwxr-xr-x 5 root root 4096 Oct 9 19:43 pkg drwxr-xr-x 2 root root 4096 Oct 9 19:43 public -rw-r--r-- 1 root root 5570 Oct 9 19:43 README.md -rwxr-xr-x 1 root root 299 Oct 9 19:43 release.sh drwxr-xr-x 7 root root 4096 Oct 9 19:43 src [root@k8s-master-15-81 kt-connect-kt-0.0.6]# go build -o "output/ktctl/ktctl" ./cmd/ktctl go: finding github.com/deckarep/golang-set v1.7.1 go: finding github.com/jessevdk/go-assets v0.0.0-20160921144138-4f4301a06e15 go: finding github.com/imdario/mergo v0.3.7 go: finding github.com/thinkerou/favicon v0.1.0 go: finding github.com/rs/zerolog v0.0.0-20190704061603-77a169535877 go: finding github.com/gorilla/websocket v1.4.1 go: finding github.com/golang/protobuf v1.3.2 go: finding github.com/campoy/embedmd v0.0.0-20171205015432-c59ce00e0296 go: finding github.com/gin-gonic/autotls v0.0.0-20180426091246-be87bd5ef97b go: finding github.com/urfave/cli v0.0.0-20190203184040-693af58b4d51 go: finding github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e go: finding github.com/zenazn/goji v0.9.0 go: finding github.com/miekg/dns v0.0.0-20190106042521-5beb9624161b go: k8s.io/apimachinery@v0.0.0-20190717022731-0bb8574e0887: unrecognized import path "k8s.io/apimachinery" (https fetch: Get https://k8s.io/apimachinery?go-get=1: dial tcp 35.201.71.162:443: i/o timeout) go: k8s.io/utils@v0.0.0-20190712204705-3dccf664f023: unrecognized import path "k8s.io/utils" (https fetch: Get https://k8s.io/utils?go-get=1: dial tcp 35.201.71.162:443: i/o timeout) go: k8s.io/client-go@v0.0.0-20190620085101-78d2af792bab: unrecognized import path "k8s.io/client-go" (https fetch: Get https://k8s.io/client-go?go-get=1: dial tcp 35.201.71.162:443: i/o timeout) go: finding github.com/pkg/errors v0.8.1 go: finding github.com/kubernetes/dashboard v1.10.1 go: golang.org/x/lint@v0.0.0-20181011164241-5906bd5c48cd: unrecognized import path "golang.org/x/lint" (https fetch: Get https://golang.org/x/lint?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) go: finding github.com/dustin/go-broadcast v0.0.0-20171205050544-f664265f5a66 go: finding github.com/manucorporat/stats v0.0.0-20180402194714-3ba42d56d227 go: golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4: unrecognized import path "golang.org/x/time" (https fetch: Get https://golang.org/x/time?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) go: finding github.com/rs/xid v1.2.1 go: google.golang.org/grpc@v1.15.0: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) go: finding github.com/gin-gonic/gin v1.4.0 go: k8s.io/api@v0.0.0-20190717022910-653c86b0609b: unrecognized import path "k8s.io/api" (https fetch: Get https://k8s.io/api?go-get=1: dial tcp 35.201.71.162:443: i/o timeout) go: golang.org/x/tools@v0.0.0-20190425163242-31fd60d6bfdc: unrecognized import path "golang.org/x/tools" (https fetch: Get https://golang.org/x/tools?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) go: error loading module requirements [root@k8s-master-15-81 kt-connect-kt-0.0.6]# [root@k8s-master-15-81 ~]# go version go version go1.12.9 linux/amd64
编译报错问题解决方法:
[root@k8s-master-15-81 kt-connect-kt-0.0.6]# export GOPROXY="https://goproxy.io" [root@k8s-master-15-81 kt-connect-kt-0.0.6]# go build -o "output/ktctl/ktctl" ./cmd/ktctl go: finding k8s.io/apimachinery v0.0.0-20190717022731-0bb8574e0887 go: finding k8s.io/utils v0.0.0-20190712204705-3dccf664f023 go: finding k8s.io/client-go v0.0.0-20190620085101-78d2af792bab go: finding golang.org/x/lint v0.0.0-20181011164241-5906bd5c48cd go: finding k8s.io/api v0.0.0-20190717022910-653c86b0609b go: finding github.com/stretchr/testify v1.3.0 go: finding github.com/mattn/go-isatty v0.0.7 go: finding gopkg.in/yaml.v2 v2.2.2 go: finding golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c go: finding github.com/golang/protobuf v1.3.1 go: finding github.com/ugorji/go v1.1.4 go: finding github.com/modern-go/reflect2 v1.0.1 go: finding github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf go: finding k8s.io/utils v0.0.0-20190221042446-c2654d5206da go: finding golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 go: finding github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550 go: finding golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 go: finding github.com/stretchr/objx v0.1.0 go: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 go: finding github.com/davecgh/go-spew v1.1.1 go: finding github.com/stretchr/testify v1.2.2 go: finding github.com/peterbourgon/diskv v2.0.1+incompatible go: finding google.golang.org/grpc v1.15.0 go: finding github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda go: finding k8s.io/klog v0.3.1 go: finding github.com/evanphx/json-patch v4.2.0+incompatible go: finding github.com/onsi/gomega v1.5.0 go: finding github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 go: finding golang.org/x/text v0.3.0 go: finding github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d go: finding golang.org/x/time v0.0.0-20161028155119-f51c12702a4d go: finding golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 go: finding golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 go: finding golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc go: finding github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b go: finding github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f go: finding golang.org/x/net v0.0.0-20190613194153-d28f0bde5980 go: finding github.com/spf13/pflag v1.0.3 go: finding google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 go: finding golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 go: finding sigs.k8s.io/yaml v1.1.0 go: finding golang.org/x/text v0.3.2 go: finding github.com/golang/protobuf v1.2.0 go: finding github.com/spf13/pflag v1.0.1 go: finding github.com/kisielk/gotool v1.0.0 go: finding github.com/google/uuid v1.1.1 go: finding honnef.co/go/tools v0.0.0-20180728063816-88497007e858 go: finding k8s.io/api v0.0.0-20190620084959-7cf5895f2711 go: finding golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f go: finding github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e go: finding k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719 go: finding github.com/google/go-cmp v0.3.0 go: finding github.com/hpcloud/tail v1.0.0 go: finding golang.org/x/net v0.0.0-20190311183353-d8887717615a go: finding github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 go: finding gopkg.in/fsnotify.v1 v1.4.7 go: finding golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e go: finding github.com/spf13/afero v1.2.2 go: finding github.com/google/btree v0.0.0-20160524151835-7d79101e329e go: finding github.com/gogo/protobuf v1.0.0 go: finding github.com/kr/pretty v0.1.0 go: finding github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be go: finding k8s.io/klog v0.3.0 go: finding k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 go: finding google.golang.org/appengine v1.1.0 go: finding golang.org/x/sync v0.0.0-20190423024810-112230192c58 go: finding golang.org/x/net v0.0.0-20180826012351-8a410e7b638d go: finding gopkg.in/go-playground/validator.v8 v8.18.2 go: finding github.com/davecgh/go-spew v1.1.0 go: finding github.com/onsi/ginkgo v1.6.0 go: finding github.com/fsnotify/fsnotify v1.4.7 go: finding golang.org/x/lint v0.0.0-20180702182130-06c8688daad7 go: finding golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be go: finding github.com/json-iterator/go v1.1.6 go: finding gopkg.in/yaml.v2 v2.2.1 go: finding github.com/pmezard/go-difflib v1.0.0 go: finding cloud.google.com/go v0.26.0 go: finding github.com/golang/lint v0.0.0-20180702182130-06c8688daad7 go: finding github.com/Azure/go-autorest v11.1.2+incompatible go: finding golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f go: finding k8s.io/kube-openapi v0.0.0-20190709113604-33be087ad058 go: finding golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a go: finding golang.org/x/sys v0.0.0-20190312061237-fead79001313 go: finding github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 go: finding github.com/google/uuid v1.0.0 go: finding github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8 go: finding github.com/google/gofuzz v1.0.0 go: finding golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52 go: finding gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 go: finding golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e go: finding github.com/hashicorp/golang-lru v0.5.0 go: finding gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 go: finding github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680 go: finding golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db go: finding github.com/golang/mock v1.1.1 go: finding github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2 go: finding github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff go: finding github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c go: finding github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 go: finding github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2 go: finding github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501 go: finding github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3 go: finding github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365 go: finding golang.org/x/net v0.0.0-20180906233101-161cd47e91fd go: finding k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6 go: finding github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0 go: finding golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 go: finding github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a go: finding github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1 go: finding golang.org/x/net v0.0.0-20170114055629-f2499483f923 go: finding golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea go: finding github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7 go: finding github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87 go: finding google.golang.org/appengine v1.5.0 go: finding golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a go: finding github.com/onsi/ginkgo v1.8.0 go: finding github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9 go: finding gopkg.in/go-playground/assert.v1 v1.2.1 go: finding github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go: finding github.com/kr/text v0.1.0 go: finding github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9 go: finding github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c go: finding github.com/client9/misspell v0.3.4 go: finding k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92 go: finding github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da go: finding github.com/PuerkitoBio/purell v1.0.0 go: finding sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e go: finding github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7 go: finding golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09 go: finding github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415 go: finding golang.org/x/net v0.0.0-20180724234803-3673e40ba225 go: finding google.golang.org/appengine v1.4.0 go: finding github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3 go: finding github.com/kr/pty v1.1.1 go: finding github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 go: finding golang.org/x/text v0.0.0-20160726164857-2910a502d2bf go: finding cloud.google.com/go v0.34.0 go: finding github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d go: finding golang.org/x/crypto v0.0.0-20181025213731-e84da0312774 go: finding github.com/imdario/mergo v0.3.5 go: finding gopkg.in/inf.v0 v0.9.0 go: finding github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367 go: finding golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e go: downloading k8s.io/client-go v0.0.0-20190620085101-78d2af792bab go: downloading github.com/rs/zerolog v0.0.0-20190704061603-77a169535877 go: downloading k8s.io/apimachinery v0.0.0-20190717022731-0bb8574e0887 go: downloading k8s.io/api v0.0.0-20190717022910-653c86b0609b go: downloading github.com/urfave/cli v0.0.0-20190203184040-693af58b4d51 go: downloading github.com/deckarep/golang-set v1.7.1 go: extracting github.com/urfave/cli v0.0.0-20190203184040-693af58b4d51 go: extracting github.com/deckarep/golang-set v1.7.1 go: extracting github.com/rs/zerolog v0.0.0-20190704061603-77a169535877 go: extracting k8s.io/apimachinery v0.0.0-20190717022731-0bb8574e0887 go: downloading github.com/gogo/protobuf v1.0.0 go: downloading github.com/google/gofuzz v1.0.0 go: downloading gopkg.in/inf.v0 v0.9.0 go: downloading golang.org/x/net v0.0.0-20190613194153-d28f0bde5980 go: downloading k8s.io/klog v0.3.1 go: extracting k8s.io/client-go v0.0.0-20190620085101-78d2af792bab go: extracting github.com/google/gofuzz v1.0.0 go: extracting gopkg.in/inf.v0 v0.9.0 go: extracting k8s.io/klog v0.3.1 go: downloading golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a go: downloading golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 go: downloading github.com/spf13/pflag v1.0.3 go: extracting golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a go: extracting github.com/spf13/pflag v1.0.3 go: extracting k8s.io/api v0.0.0-20190717022910-653c86b0609b go: extracting golang.org/x/net v0.0.0-20190613194153-d28f0bde5980 go: downloading github.com/davecgh/go-spew v1.1.1 go: downloading cloud.google.com/go v0.34.0 go: downloading k8s.io/utils v0.0.0-20190712204705-3dccf664f023 go: downloading github.com/imdario/mergo v0.3.7 go: downloading github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d go: downloading github.com/golang/protobuf v1.3.2 go: downloading github.com/modern-go/reflect2 v1.0.1 go: extracting golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 go: extracting github.com/davecgh/go-spew v1.1.1 go: downloading github.com/json-iterator/go v1.1.6 go: extracting github.com/imdario/mergo v0.3.7 go: downloading sigs.k8s.io/yaml v1.1.0 go: downloading golang.org/x/text v0.3.2 go: extracting k8s.io/utils v0.0.0-20190712204705-3dccf664f023 go: extracting github.com/modern-go/reflect2 v1.0.1 go: extracting sigs.k8s.io/yaml v1.1.0 go: downloading golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 go: extracting github.com/gogo/protobuf v1.0.0 go: extracting github.com/json-iterator/go v1.1.6 go: downloading gopkg.in/yaml.v2 v2.2.2 go: downloading golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go: extracting github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d go: extracting golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 go: extracting github.com/golang/protobuf v1.3.2 go: extracting gopkg.in/yaml.v2 v2.2.2 go: extracting github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd go: extracting cloud.google.com/go v0.34.0 go: extracting golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f go: extracting golang.org/x/text v0.3.2 编译后的文件为: [root@k8s-master-15-81 kt-connect-kt-0.0.6]# ll output/ktctl/ total 35200 -rwxr-xr-x 1 root root 36042716 Oct 29 15:55 ktctl
三、在Kubernetes中部署联调服务
在k8s集群操作:
kubectl run tomcat --image=tomcat:7 --expose --port=8080 会自动创建deployments和service
四、Connect 从本地访问Kubernetes资源
在k8s集群操作:把admin.conf文件分发给本地linux机器
[root@k8s-master-15-81 ~]# scp /etc/kubernetes/admin.conf root@192.168.15.91:/root/.kube
在本地Linux机器操作:
[root@localhost ~]# ktctl --kubeconfig /root/.kube/admin.conf --debug connect
2019/10/29 11:58:46 Client address 10.0.0.100
2019/10/29 11:58:46 Deploying proxy deployment kt-connect-daemon-fbyyp in namespace default
2019/10/29 11:58:46 Pods not ready......
2019/10/29 11:58:48 Pod status is Pending
2019/10/29 11:58:50 Pod status is Running
2019/10/29 11:58:50 Success deploy proxy deployment kt-connect-daemon-fbyyp in namespace default
2019/10/29 11:58:50 Child, os.Args = [ktctl --kubeconfig /root/.kube/admin.conf --debug connect]
2019/10/29 11:58:50 Child, cmd.Args = [kubectl --kubeconfig=/root/.kube/admin.conf -n default port-forward deployments/kt-connect-daemon-fbyyp 2222:22]
Daemon Start At 18753
#root用户执行,不需要操作
# ktctl --kubeconfig /home/luanpeng/.kube/config --debug connect
如果提示已经运行,则可以在k8s中把deployment删除,在客户端把/home/luanpeng/.ktctl/
文件夹删除.
运行成功后可以查看是否成功启动sshuttle,这是老版本的,新版本不能这样判断。
ps -ef |grep sshuttle
[root@localhost ~]# ps -ef |grep sshuttle #此时进程不存在
root 18647 18448 0 15:24 pts/1 00:00:00 grep --color=auto sshuttle
[root@localhost ~]#
如果sshuttle两个进程没有启动,则说明启动失败
/usr/bin/python3 /usr/local/bin/sshuttle --dns --to-ns 10.42.0.58 -e ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -i /root/.kt_id_rsa -r
/usr/bin/python3 /usr/local/bin/sshuttle --method auto --firewall
在这种场景下,开发者只要直接使用ktctl connect打通本地到集群的网络即可,就可以直接在本地通过PodIP/ClusterIP/DNS地址访问集群中的服务。
访问PodIP:deamon通,其他的有的通,有点不通
curl http://172.16.0.147:8080
访问ClusterIP:不通
curl http://172.19.143.139:8080
Access Server内部DNS地址:不通(未测试成功, 提示Could not resolve host)
# 先看是否能正常解析 nslookup tomcat.default.svc.cluster.local # 试一下http请求 $ curl http://tomcat.default.svc.cluster.local:8080
四、Exchange从群集访问本地
在本地创建Tomcat 8并公开8080端口
docker run -itd -p 8080:8080 tomcat:8 $ ktctl exchange tomcat --expose 8080
暴露本地服务到k8s中
ktctl exchange tomcat --expose 8080
在k8spod中通过内部服务DNS地址访问本地tomcat:
注意:如果kubectl connect未运行,则只能从群集访问
curl http://tomcat.default.svc.cluster.local:8080 | grep '<h1>'
在这个场景下,我们希望集群中所有对服务C的访问能够请求到本地正在开发的C’。因此开发者可以通过ktctl exhcnage命令,在集群内部署一个Shadow容器已接管所有原本对C实例的请求,再通过Shadow容器将请求转发到本地。并在退出命令式恢复集群中C的实例状态。
玩转Kubernetes开发测试环境
https://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=2649703426&idx=1&sn=22be252aac597745cf832df987b324cf&chksm=88937b61bfe4f277d4744f2205a4f1fbdc7ff928e386c5aa728d8e0baccb202f44ef502a78a9&mpshare=1&scene=1&srcid=&sharer_sharetime=1572233974491&sharer_shareid=13fe4d560ad7f178a70a6b90efad8011#rd
五、Mesh
mesh与exchange的最大区别在于,exchange会完全替换原有的应用实例。mesh命令创建代理容器,但是会保留原应用容器,代理容器会动态生成version标签,以便用于可以通过Istio流量规则将特定的流量转发到本地,同时保证环境正常链路始终可用。在这种场景下,在确保开发测试环境稳定的同时,基于Istio的流量规则,我们可以把部分流量转到本地,从而实现在共享的开发测试环境中的联调能力。
六、仪表盘部署
参考:https://alibaba.github.io/kt-connect/#/guide/dashboard
参考:
https://blog.csdn.net/luanpeng825485697/article/details/102775981
https://rdc-incubator.github.io/kt-docs/#/zh-cn/downloads
https://github.com/alibaba/kt-connect