sudo kubectl apply -f springbootapp-vs-v1.yaml -n springistiodemo
sudo kubectl create namespace istioclient sudo kubectl label namespace istioclient istio-injection=enabled sudo kubectl get ns istioclient --show-labels # 查看注入状态
apiVersion: apps/v1 kind: Deployment metadata: name: busyclient # namespace: istioclient spec: replicas: 1 selector: matchLabels: app: busyclient strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app: busyclient version: v1 spec: containers: - name: busybox image: busybox imagePullPolicy: IfNotPresent # 不存在才拉取镜像,默认值 command: [ "/bin/sh", "-c", "sleep 3600" ]
sudo kubectl apply -f busybox-client.yaml -n istioclient
sudo kubectl get pods -n istioclient
sudo kubectl exec -it busyclient-5f6b7b954d-9wq5q /bin/sh -n istioclient
wget -q -O - http://springbootapp-svc.springistiodemo:8080/hello
1.上述服务格式[servicename].[namespace]:[port]/[action] 客户端与服务不在同一命名空间下,使用上述格式访问服务,参考k8s的namespace隔离机制 2.如在同一命名空间下,则直接使用[servicename]:[port]/[action]访问 for i in `seq 10`;do wget -q -O - http://springbootapp-svc:8080/hello;done 3.此处的port对应的是k8s的service(svc)节点的port端口值,不是nodePort端口设置值; port是service端口,即k8s中服务之间的访问端口 targetport是pod(也就是容器)的端口 nodeport是容器所在node节点的端口,即外部机器可访问的端口。(通过nodeport类型的service暴露给集群节点) 4.busybox client客户端也必须经过 Istio 注入,因为只有客户端被 Istio 注入才可以接收到来自 Pilot 有关 Virtual Service 和 Destination Rule 的配置信息,才可以保证流量接管生效。
sudo kubectl run --namespace=springistiodemo busybox --rm -ti --image busybox /bin/sh
上一个:云环境下集合隐私计算-解读