k8s + sofa mesh + rpc
$ brew install kubernetes-cli
...
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.2", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-08T16:31:10Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.1-25+cbc1f79f9924ea", GitCommit:"cbc1f79f9924ea45ae0618a3544986226abb8469", GitTreeState:"clean", BuildDate:"2018-05-07T11:43:18Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
kubectl cluster-info
$ kubectl config use-context default
Switched to context "default".
$ kubectl cluster-info
Kubernetes master is running at https://161.117.69.35:6443
Heapster is running at https://161.117.69.35:6443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://161.117.69.35:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
monitoring-influxdb is running at https://161.117.69.35:6443/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Helm Kubernetes Kubernetes
$ brew install kubernetes-helm
$ git clone [email protected]:alipay/sofa-mesh.git
$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system
$ kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-citadel ClusterIP 172.16.113.0 <none> 8060/TCP,9093/TCP 2m
istio-egressgateway ClusterIP 172.16.93.234 <none> 80/TCP,443/TCP 2m
istio-galley ClusterIP 172.16.199.113 <none> 443/TCP,9093/TCP 2m
istio-pilot ClusterIP 172.16.94.105 <none> 15010/TCP,15011/TCP,8080/TCP,9093/TCP 2m
istio-policy ClusterIP 172.16.152.158 <none> 9091/TCP,15004/TCP,9093/TCP 2m
istio-sidecar-injector ClusterIP 172.16.226.86 <none> 443/TCP 2m
istio-statsd-prom-bridge ClusterIP 172.16.18.241 <none> 9102/TCP,9125/UDP 2m
istio-telemetry ClusterIP 172.16.200.109 <none> 9091/TCP,15004/TCP,9093/TCP,42422/TCP 2m
prometheus ClusterIP 172.16.157.229 <none> 9090/TCP 2m
istio-system pod Running
$ kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-citadel-965587bb-vzmtd 0/1 ContainerCreating 0 2m
istio-cleanup-secrets-w6vnw 0/1 ContainerCreating 0 2m
istio-egressgateway-5745bd96f-ph2jn 0/1 ContainerCreating 0 2m
istio-galley-5cb74d5b55-pjh4d 0/1 ContainerCreating 0 2m
istio-ingressgateway-65cd86fcd-m9kth 0/1 ContainerCreating 0 2m
istio-pilot-649899d9f6-gfrhb 0/1 ContainerCreating 0 2m
istio-policy-6b5d7945f6-t4hxs 0/1 ContainerCreating 0 2m
istio-sidecar-injector-58bb8694c5-hxbgz 0/1 ContainerCreating 0 2m
istio-statsd-prom-bridge-7f44bb5ddb-n8vz9 0/1 ContainerCreating 0 2m
istio-telemetry-6d94577dfc-ffs25 0/1 ContainerCreating 0 2m
prometheus-84bd4b9796-l4dxm 0/1 ContainerCreating 0 2m
$ git clone [email protected]:gxcsoccer/k8s-mesh-rpc.git
e2e-dubbo sidecar
$ kubectl apply -f kubernetes/e2e-dubbo-ns.yaml
Deployments
$ kubectl apply -f kubernetes/dubbo-consumer.yaml
$ kubectl apply -f kubernetes/dubbo-provider-v1.yaml
$ kubectl apply -f kubernetes/dubbo-provider-nodejs.yaml
Services
$ kubectl apply -f kubernetes/dubbo-consumer-service.yaml
$ kubectl apply -f kubernetes/dubbo-provider-service.yaml
$ kubectl get pods -n e2e-dubbo
NAME READY STATUS RESTARTS AGE
e2e-dubbo-consumer-75f96f5f6-dkz2x 2/2 Running 0 13m
e2e-dubbo-provider-v1-6966bcb497-vxz6t 2/2 Running 0 3h
e2e-dubbo-provider-v2-795dfb68dc-r5dbc 2/2 Running 0 3h
e2e-dubbo-provider-v3-9f8d6b9b6-7gtv4 2/2 Running 0 38m
$ kubectl get services -n e2e-dubbo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
e2e-dubbo-consumer ClusterIP 172.19.15.83 <none> 8080/TCP 3h
e2e-dubbo-provider ClusterIP 172.19.0.18 <none> 12345/TCP 3h
$ kubectl proxy
Starting to serve on 127.0.0.1:8001
v1, v2 nodejs
$ curl http://127.0.0.1:8001/api/v1/namespaces/e2e-dubbo/services/e2e-dubbo-consumer:8080/proxy/sayHello?name=dubbo-mosn
Hello, dubbo-mosn (from Spring Boot dubbo e2e test) [e2e-dubbo-provider-v1-6966bcb497-vxz6t/172.16.1.150]%
$ curl http://127.0.0.1:8001/api/v1/namespaces/e2e-dubbo/services/e2e-dubbo-consumer:8080/proxy/sayHello?name=dubbo-mosn
Hello, dubbo-mosn (from Nodejs dubbo e2e test) [e2e-dubbo-provider-v3-9f8d6b9b6-7gtv4/172.16.1.152]%
Version Route v1
DestinationRule
$ kubectl apply -f kubernetes/dubbo-consumer.destinationrule.yaml
# dubbo-consumer.destinationrule.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: e2e-dubbo-provider
namespace: e2e-dubbo
spec:
host: e2e-dubbo-provider
subsets:
- name: v1
labels:
ver: v1
- name: v2
labels:
ver: v2
$ kubectl apply -f kubernetes/dubbo-consumer.version.vs.yaml
# dubbo-consumer.version.vs.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: e2e-dubbo-provider
namespace: e2e-dubbo
spec:
hosts:
- e2e-dubbo-provider
http:
- route:
- destination:
host: e2e-dubbo-provider
subset: v1
v1
$ curl http://127.0.0.1:8001/api/v1/namespaces/e2e-dubbo/services/e2e-dubbo-consumer:8080/proxy/sayHello?name=dubbo-mosn
Hello, dubbo-mosn (from Spring Boot dubbo e2e test) [e2e-dubbo-provider-v1-6966bcb497-vxz6t/172.16.1.150]%
$ curl http://127.0.0.1:8001/api/v1/namespaces/e2e-dubbo/services/e2e-dubbo-consumer:8080/proxy/sayHello?name=dubbo-mosn
Hello, dubbo-mosn (from Spring Boot dubbo e2e test) [e2e-dubbo-provider-v1-6966bcb497-vxz6t/172.16.1.150]%
$ curl http://127.0.0.1:8001/api/v1/namespaces/e2e-dubbo/services/e2e-dubbo-consumer:8080/proxy/sayHello?name=dubbo-mosn
Hello, dubbo-mosn (from Spring Boot dubbo e2e test) [e2e-dubbo-provider-v1-6966bcb497-vxz6t/172.16.1.150]%