系列文章:nginx
总目录索引:九析带你轻松完爆 istio 服务网格系列教程web
目录api
1 前言微信
2 istio 初探app
2.1 手动注入 sidecaride
2.2 自动注入 sidecarspa
1 前言
3d
若是你对博客有任何疑问,请加微信沟通:orm
2 istio 初探
blog
上节九析带你轻松完爆了 istio 的安装。可是我相信安装成功的小伙伴依然云里雾里,由于看着一大坨 pod 在那里 running 着,彷佛并无产生任何做用。这节,九析就带你“莫畏浮云遮望眼,守得云开见月明”。为了预期效果,咱们不妨先创建一个 deployment,内容以下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14-alpine
ports:
- containerPort: 80
建立 deployment,固然为了让你能更深入地记住哥,把哥印在灵魂深处,你须要首先建立一个命名空间:
kubectl create ns jiuxi
kubectl apply -f nginx-deployment.yaml -n jiuxi
命令执行成功后,查询 nginx pod 状态:
kubectl get pods -n jiuxi
截图以下:须要注意 ready 这一列,内容为 1/1,表示的含义是 pod 内有一个容器,且该容器运行成功并处于就绪状态。
下面到了激动人心的时刻了,由于 istio 即将闪亮登场。
2.1 手动注入 sidecar
执行以下语句:
kube-inject -f nginx-deployment.yaml | kubectl apply -n jiuxi -f -
命令执行结果以下图所示:
此时你会发现一个奇怪的现象,nginx-deployment.yaml 并没修改,可是 ready 状态却变成了 2/2。根据上面的解释可知,如今 pod 内有两个容器,且这两个容器都运行成功并处于就绪状态。为何多了一个容器呢?
查看 pod 的详细信息:
kubectl get pod -n jiuxi nginx-xxxx -o yaml # xxxx 根据本身实际状况填写
若是你有相似 rancher 这样的 web 控制台,能够看得更仔细些,以下图所示。若是你尚未安装和配置 rancher,你能够参考哥的轻松完爆 rancher 系列进行安装,放心,容易到爆,容易到你尖叫。
从上图可知。此时 nginx pod 内部一共有 3 个容器,一个初始化容器 istio-init 已经运行成功并结束了,一个就是 nginx 本尊,另一个就是本文的主角 istio-proxy 了,它就是 sidecar,做用跟鸡你太美的经纪人的做用差很少,负责跟外部打交道用的。
此时此刻,你已经为 pod 手工织入了 istio。可是这样彷佛有点不够爽。由于每创建一个 pod 都撸这么一管,感受有点累,有没有批量或者更天然的方式呢?
2.2 命名空间注入 sidecar
如今咱们删除掉刚才建立的 nginx:
kubectl delete deployments.apps nginx -n jiuxi
执行以下命令在命名空间内实现自动注入 sidecar:
kubectl label namespaces jiuxi istio-injection=enabled
kubectl get ns jiuxi --show-labels # 查看 label 是否成功建立
再次根据 nginx-deployment.yaml 文件建立 nginx deployment:
kubectl apply -f nginx-deployment.yaml -n jiuxi
建立成功后查看 pod 信息,发现已经自动织入了 sidecar。
自此,本节九析带你轻松完爆了 istio 的手动和自动织入功能。