Istio 范例

一、Istio / 入门 - 部署示例应用

部署yml文件,位于istio目录的samples目录下。如C:\Program Install\istio-1.10.3\samples

1. 部署Booking

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

#kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created

2. 查看创建的资源

#kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-79f774bdb9-5wft6       2/2     Running   0          4m6s
productpage-v1-6b746f74dc-9xx25   2/2     Running   0          4m6s
ratings-v1-b6994bb9-jn58f         1/2     Running   0          4m6s
reviews-v1-545db77b95-dm4bz       2/2     Running   0          4m6s
reviews-v2-7bf8c9648f-hsgwr       2/2     Running   0          4m6s
reviews-v3-84779c7bbc-bhq66       2/2     Running   0          4m6s

#kubectl get svc
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.101.66.249   <none>        9080/TCP   4m10s
kubernetes    ClusterIP   10.96.0.1       <none>        443/TCP    6h4m
productpage   ClusterIP   10.111.50.235   <none>        9080/TCP   4m9s
ratings       ClusterIP   10.110.48.219   <none>        9080/TCP   4m10s
reviews       ClusterIP   10.100.11.29    <none>        9080/TCP   4m10s
#kubectl get ingress
No resources found in default namespace.

#kubectl get sidecars
No resources found in default namespace.

验证

kubectl exec  ratings-v1-b6994bb9-jn58f -c ratings -- curl -s productpage:9080/productpage 

二、Istio / 入门 对外发布

此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。

  1. 关联应用到Ingress Gateway
#kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
#kubectl get gateway -n default
NAME               AGE
bookinfo-gateway   2m46s

#kubectl get vs -n default
NAME       GATEWAYS               HOSTS   AGE
bookinfo   ["bookinfo-gateway"]   ["*"]   2m55s
  1. 确保配置文件正确
#istioctl analyze

✔ No validation issues found when analyzing namespace: default.

三、Istio / 入门 配置ingress地址和端口

  1. 对于运行于本地环境的Kubernetes,如minikube:
环境变量 说明
INGRESS_HOST 本地IP
INGRESS_PORT kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}' windows用单引号,linux用双引号
SECURE_INGRESS_PORT kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=='https')].nodePort}' windows用单引号,linux用双引号
GATEWAY_URL $INGRESS_HOST:$INGRESS_PORT
#kubectl -n istio-system get service istio-ingressgateway
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                      AGE
istio-ingressgateway   LoadBalancer   10.110.185.80   localhost     15021:30776/TCP,80:32338/TCP,443:32623/TCP,31400:31980/TCP,15443:31490/TCP   88m

#kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=='http2')]}'
'{"name":"http2","nodePort":32338,"port":80,"protocol":"TCP","targetPort":8080}'

#kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=='http2')].nodePort}'
'32338'
#kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=='https')]}'
'{"name":"https","nodePort":32623,"port":443,"protocol":"TCP","targetPort":8443}'

#kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=='https')].nodePort}'
'32623'
  1. 对于正经Kubernetes集群
    执行如下,看是否支持外部负载均衡。范例:
kubectl get svc istio-ingressgateway -n istio-system
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                      AGE
istio-ingressgateway   LoadBalancer   172.21.109.129   130.211.10.121  80:31380/TCP,443:31390/TCP,31400:31400/TCP   17h

如果 EXTERNAL-IP 存在值,那么就存在外部负载均衡可用于ingress gateway。 EXTERNAL-IP 值为 <none> (or <pending>),那就不存在外部负载均衡。这时,可以通过 node port访问gateway(如上例)。

环境变量 说明
INGRESS_HOST kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
INGRESS_PORT kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}' nodePort改port
SECURE_INGRESS_PORT kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=='https')].port}' nodePort改port
GATEWAY_URL $INGRESS_HOST:$INGRESS_PORT
  1. 外部访问测试
    Istio Bookinfo 示例包含四个独立的微服务,每个微服务都有多个版本。其中一个微服务 reviews 的三个不同版本已经部署并同时运行。在浏览器中访问 Bookinfo 应用程序的 /productpage 并刷新几次。您会注意到,有时书评的输出包含星级评分,有时则不包含。

http://localhost/productpage

图片.png
图片.png
图片.png

四、Istio / 入门 Dashboard

部署 Kiali 仪表板、 以及 PrometheusGrafana、 还有 Jaeger

部署

#kubectl apply -f samples/addons

#kubectl get svc -n istio-system
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                      AGE
grafana                ClusterIP      10.109.68.9      <none>        3000/TCP                                                                     2m58s
istio-egressgateway    ClusterIP      10.100.39.94     <none>        80/TCP,443/TCP                                                               116m
istio-ingressgateway   LoadBalancer   10.110.185.80    localhost     15021:30776/TCP,80:32338/TCP,443:32623/TCP,31400:31980/TCP,15443:31490/TCP   116m
istiod                 ClusterIP      10.103.228.126   <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP                                        116m
jaeger-collector       ClusterIP      10.109.202.41    <none>        14268/TCP,14250/TCP                                                          2m56s
kiali                  ClusterIP      10.107.0.209     <none>        20001/TCP,9090/TCP                                                           2m55s
prometheus             ClusterIP      10.109.39.193    <none>        9090/TCP                                                                     2m54s
tracing                ClusterIP      10.108.251.51    <none>        80/TCP                                                                       2m57s
zipkin                 ClusterIP      10.103.210.61    <none>        9411/TCP                                                                     2m56s

#kubectl get pods -n istio-system
NAME                                   READY   STATUS    RESTARTS   AGE
grafana-56d978ff77-24znt               1/1     Running   0          3m9s
istio-egressgateway-5547fcc8fc-dkfk2   1/1     Running   0          116m
istio-ingressgateway-8f568d595-ttbfg   1/1     Running   0          116m
istiod-5c79cf75bf-d67vk                1/1     Running   0          76m
jaeger-5c7c5c8d87-lh8vn                1/1     Running   0          3m9s
kiali-5bb9c9cf49-5xjxf                 1/1     Running   0          3m7s
prometheus-5546cc5d8f-txz4x            3/3     Running   0          3m5s

kubectl rollout status deployment/kiali -n istio-system
deployment "kiali" successfully rolled out

查看dashboard,会自动打开一个页面

C:\Program Install\istio-1.10.3>istioctl dashboard kiali
http://localhost:20001/kiali
图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容