1、istio初探

上一节实现了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

为了方便视图,创建一个新的名称空间

kubectl  create  namespace test
kubectl apply -f nginx.yml -n test
kubectl get pod -n test

image-20200316111616355.png

2、手动注入sidecar

执行如下语句:

istioctl  kube-inject -f nginx.yml | kubectl apply  -n test -f -
kubectl  get  pod  -n test

istio注入sidecar_第1张图片

稍等会儿就能看到原来一个pod变成了两个,如果你有类似 rancher 这样的 web 控制台,可以看得更仔细些,如下图所示

istio注入sidecar_第2张图片

从上图可知。此时 nginx pod 内部一共有 3 个容器,一个初始化容器 istio-init 已经运行成功并结束了,一个就是nginx 本尊,另外一个就是本文的主角 istio-proxy 了,它就是  sidecar,作用是负责跟外部打交到用的。

3、命名空间注入sidecar

现在删除掉刚才创建的 nginx:

kubectl delete deploy nginx -n test

执行如下命令在命名空间内实现自动注入 sidecar:

kubectl label namespaces test istio-injection=enabled
kubectl get ns test --show-labels           #查看状态

再次创建nginx的deploy文件

kubectl apply -f nginx.yml -n test

稍等会儿就能看到已经自动注入了

istio注入sidecar_第3张图片

参考文章:https://blog.51cto.com/14625168/2474271