系统
[root@master-47-35 istio-1.1.0.snapshot.1]# uname -a
Linux master-47-35 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
kubernetes版本
[root@master-47-35 istio-1.1.0.snapshot.1]# kubectl version
Client Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.0-168+f47446a730ca03", GitCommit:"f47446a730ca037473fb3bf0c5abeea648c1ac12", GitTreeState:"clean", BuildDate:"2018-08-25T21:05:52Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.0-168+f47446a730ca03", GitCommit:"f47446a730ca037473fb3bf0c5abeea648c1ac12", GitTreeState:"clean", BuildDate:"2018-08-25T21:05:52Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
1.下载源码
wget https://github.com/istio/istio/releases/download/1.1.0.snapshot.1/istio-1.1.0.snapshot.1-linux.tar.gz
2.解压
tar -zxvf istio-1.1.0.snapshot.1-linux.tar.gz
修改yaml文件
把谷歌的镜像改为990570827
镜像库,example 990570827/proxyv2:1.1.0.snapshot.1
3.部署
cd istio-1.1.0.snapshot.1
[root@master-47-35 istio-1.1.0.snapshot.1]# kubectl create -f install/kubernetes/istio-demo.yaml
查看部署结果
[root@master-47-35 istio-1.1.0.snapshot.1]# kubectl get all -n istio-system
NAME READY STATUS RESTARTS AGE
pod/grafana-6f5678c94b-v7mh6 1/1 Running 0 3h
pod/istio-citadel-7f68b59fc9-fmg9d 1/1 Running 0 3h
pod/istio-cleanup-secrets-kxdmb 0/1 Completed 0 3h
pod/istio-egressgateway-669d8b6fdf-fqzt9 1/1 Running 0 3h
pod/istio-galley-866d669949-zqgnc 1/1 Running 0 3h
pod/istio-grafana-post-install-s8qsj 0/1 Completed 0 3h
pod/istio-ingressgateway-7c45d4d67d-r8mth 1/1 Running 0 3h
pod/istio-pilot-6ddb675d47-krjnt 2/2 Running 0 3h
pod/istio-policy-5f84b49499-2jfpn 2/2 Running 0 3h
pod/istio-security-post-install-4dq9v 0/1 Completed 0 3h
pod/istio-sidecar-injector-768488bbdc-6k2rq 1/1 Running 0 3h
pod/istio-telemetry-79b769f6f8-zntx6 2/2 Running 0 3h
pod/istio-tracing-7cd54799d8-9gm74 1/1 Running 0 3h
pod/prometheus-6574b56df9-mwqdg 1/1 Running 0 3h
pod/servicegraph-569554df7d-9v27h 1/1 Running 0 3h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/grafana ClusterIP 10.254.47.45 3000/TCP 3h
service/istio-citadel ClusterIP 10.254.42.229 8060/TCP,9093/TCP 3h
service/istio-egressgateway ClusterIP 10.254.18.253 80/TCP,443/TCP 3h
service/istio-galley ClusterIP 10.254.51.34 443/TCP,9093/TCP,9901/TCP 3h
service/istio-ingressgateway LoadBalancer 10.254.25.173 80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:30345/TCP,8060:30837/TCP,853:30173/TCP,15030:31850/TCP,15031:31125/TCP 3h
service/istio-pilot ClusterIP 10.254.15.200 15010/TCP,15011/TCP,8080/TCP,9093/TCP 3h
service/istio-policy ClusterIP 10.254.58.242 9091/TCP,15004/TCP,9093/TCP 3h
service/istio-sidecar-injector ClusterIP 10.254.4.176 443/TCP 3h
service/istio-telemetry ClusterIP 10.254.56.53 9091/TCP,15004/TCP,9093/TCP,42422/TCP 3h
service/jaeger-agent ClusterIP None 5775/UDP,6831/UDP,6832/UDP 3h
service/jaeger-collector ClusterIP 10.254.9.76 14267/TCP,14268/TCP 3h
service/jaeger-query ClusterIP 10.254.15.22 16686/TCP 3h
service/prometheus ClusterIP 10.254.3.16 9090/TCP 3h
service/servicegraph ClusterIP 10.254.59.91 8088/TCP 3h
service/tracing ClusterIP 10.254.46.220 80/TCP 3h
service/zipkin ClusterIP 10.254.28.142 9411/TCP 3h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/grafana 1 1 1 1 3h
deployment.apps/istio-citadel 1 1 1 1 3h
deployment.apps/istio-egressgateway 1 1 1 1 3h
deployment.apps/istio-galley 1 1 1 1 3h
deployment.apps/istio-ingressgateway 1 1 1 1 3h
deployment.apps/istio-pilot 1 1 1 1 3h
deployment.apps/istio-policy 1 1 1 1 3h
deployment.apps/istio-sidecar-injector 1 1 1 1 3h
deployment.apps/istio-telemetry 1 1 1 1 3h
deployment.apps/istio-tracing 1 1 1 1 3h
deployment.apps/prometheus 1 1 1 1 3h
deployment.apps/servicegraph 1 1 1 1 3h
NAME DESIRED CURRENT READY AGE
replicaset.apps/grafana-6f5678c94b 1 1 1 3h
replicaset.apps/istio-citadel-7f68b59fc9 1 1 1 3h
replicaset.apps/istio-egressgateway-669d8b6fdf 1 1 1 3h
replicaset.apps/istio-galley-866d669949 1 1 1 3h
replicaset.apps/istio-ingressgateway-7c45d4d67d 1 1 1 3h
replicaset.apps/istio-pilot-6ddb675d47 1 1 1 3h
replicaset.apps/istio-policy-5f84b49499 1 1 1 3h
replicaset.apps/istio-sidecar-injector-768488bbdc 1 1 1 3h
replicaset.apps/istio-telemetry-79b769f6f8 1 1 1 3h
replicaset.apps/istio-tracing-7cd54799d8 1 1 1 3h
replicaset.apps/prometheus-6574b56df9 1 1 1 3h
replicaset.apps/servicegraph-569554df7d 1 1 1 3h
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
horizontalpodautoscaler.autoscaling/istio-egressgateway Deployment/istio-egressgateway /80% 1 5 1 3h
horizontalpodautoscaler.autoscaling/istio-ingressgateway Deployment/istio-ingressgateway /80% 1 5 1 3h
horizontalpodautoscaler.autoscaling/istio-pilot Deployment/istio-pilot /80% 1 5 1 3h
horizontalpodautoscaler.autoscaling/istio-policy Deployment/istio-policy /80% 1 5 1 3h
horizontalpodautoscaler.autoscaling/istio-telemetry Deployment/istio-telemetry /80% 1 5 1 3h
NAME DESIRED SUCCESSFUL AGE
job.batch/istio-cleanup-secrets 1 1 3h
job.batch/istio-grafana-post-install 1 1 3h
job.batch/istio-security-post-install 1 1 3h
添加istioctl工具到PATH
[root@master-47-35 istio-1.1.0.snapshot.1]# cp bin/istioctl /usr/bin/
部署网关
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
部署bookinfo
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
查看部署结果
[root@master-47-35 istio-1.1.0.snapshot.1]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.254.39.12 9080/TCP 2h
kubernetes ClusterIP 10.254.0.1 443/TCP 62d
productpage NodePort 10.254.19.163 9080:30530/TCP 2h
ratings ClusterIP 10.254.50.244 9080/TCP 2h
reviews ClusterIP 10.254.23.91 9080/TCP 2h
[root@master-47-35 istio-1.1.0.snapshot.1]# kubectl get po
NAME READY STATUS RESTARTS AGE
details-v1-6764bbc7f7-5kcps 1/1 Running 0 2h
productpage-v1-54b8b9f55-mdpjk 1/1 Running 0 2h
ratings-v1-7bc85949-ffhcd 1/1 Running 0 2h
reviews-v1-fdbf674bb-98vnm 1/1 Running 0 2h
reviews-v2-5bdc5877d6-9qws8 1/1 Running 0 2h
reviews-v3-dd846cc78-mx2v2 1/1 Running 0 2h
使用节点端口时确定入口IP和端口
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o 'jsonpath={.items[0].status.hostIP}')
[root@master-47-35 istio-1.1.0.snapshot.1]# env | grep GATEWAY_URL
GATEWAY_URL=10.39.47.35:31380
##部署网关
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
验证
[root@master-47-35 istio-1.1.0.snapshot.1]# curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage
200
end
这边文章只是简单记录一下istio的部署过程
参考:
quick-start
Service Mesh实践之Istio初体验
bookinfo
determining-the-ingress-ip-and-ports