LabHub
学习 学习路径 课程

Istio 服务网格

网格安装清单与边车的解剖

在 LabHub 中继续学习

目标

安装Messenger时,可以确认实际进入群集的是什么,并通过结构说明侧卡注入的帕德与原来的帕德有什么不同。

为什么重要

Messenger引入失败的大部分都始于“不知道安装了什么”的状态。istioctl install虽然看起来像是一行结束,但后面会同时输入几十个CRD、Webhook设置、ConfigMap、控制平面工作负载。所以在实际工作中,在安装前manifest generate首先用眼睛,然后写下将内容提交到存储库的方式。这样才能在升级时看到diff。注入也是如此。注入是在生成派德时webhook修改规格,只要贴上标签,不进行rollout,什么都不发生。用手确认这一事实,几秒钟内就能回答“贴上标签,但没有进入消息”。

在这个实习环境中,真正的Envoy不会处理流量。所以评分是看配置文件和静态分析。相反,解剖注入结果配置文件的训练在实际环境中也一样使用。

阶段

  1. istioctl version输出/root/istio/out/version.txt请保存到(必须包含版本号)。然后在安装前进行检查(istioctl x precheck)包括标准错误在内/root/istio/out/precheck.txt请保存到。
  2. istioctl manifest generate结果/root/istio/manifest.yaml请保存为。CustomResourceDefinitionistiod必须进去kind:以开始的行数必须为10个以上。然后按种类统计数量。/root/istio/out/manifest-kinds.txt请保存到CustomResourceDefinition应该显示在这个统计中)。
  3. 将宣言应用于群集,注册消息API类型。virtualservices.networking.istio.iodestinationrules.networking.istio.iogateways.networking.istio.iopeerauthentications.security.istio.ioauthorizationpolicies.security.istio.io必须有五个,istio.io组合CRD必须有5个以上。
  4. 名称空间mesh-lab制作并贴标签istio-injection=enabled请粘贴。名称空间legacy也可以制作,但请不要贴上****注入标签。还有/root/istio/out/injection-note.txt请在上面写上“即使贴上标签,现有帕德也保持原样,只有通过滚动才能再生成,才能放入侧卡”。
  5. /opt/lab/fixtures/istio/inject-target.yamlistioctl kube-inject转过来结果/root/istio/injected.yaml请保存为。Deployment的容器中paymentsistio-proxy必须有两个,初始化容器(istio-init或者istio-validation)必须存在,在pad模板中sidecar.istio.io/status必须要有注释。
  6. istioctl analyze -n mesh-lab结果/root/istio/out/analyze.txt请保存到Error [不能留下)。还有/root/istio/out/analyze-note.txt请用两行文字写出analyze不是对流量进行的检查,而是在应用设置前后静态检查的内容。
  7. /root/istio/out/sidecar.json请制作。键是containers(容器名称数组,istio-proxy包括),init_containers(1个以上排列),container_count(注射后容器数量),proxy_image(injected.yamlistio-proxy容器图像和字符串必须完全相同),interception(如何拦截交通的一句话——iptables必须包含这个单词)有五个。
  8. /root/istio/out/mesh-readiness.json请制作。istio_crds(群集的istio.io集团CRD实际数量),injection_namespaces(附有注射标签的命名空间阵列——mesh-lab有银子legacy不应该有),analyze_errors(0)是三个键。另外istioctl validate -f /root/istio/injected.yaml结果/root/istio/out/validate.txt请保存到。

参考

istioctl版本和安装前检查

istioctl version输出/root/istio/out/version.txt请保存到(必须包含版本号)。然后在安装前进行检查(istioctl x precheck)包括标准错误在内/root/istio/out/precheck.txt请保存到。

istioctl version先拍客户端版本。安装前检查在experimental子命令中,错误信息也是结果,所以请一起保存到标准错误中。

生成安装配置文件并计数内容

istioctl manifest generate结果/root/istio/manifest.yaml请保存为。CustomResourceDefinitionistiod必须进去kind:以开始的行数必须为10个以上。然后按种类统计数量。/root/istio/out/manifest-kinds.txt请保存到CustomResourceDefinition应该显示在这个统计中)。

istioctl manifest generate在集群中什么都不做,只吐出YAML。有多少个是什么kind:只要数起以开始的字母就可以了。

将消息API类型注册到群集中

将宣言应用于群集,注册消息API类型。virtualservices.networking.istio.iodestinationrules.networking.istio.iogateways.networking.istio.iopeerauthentications.security.istio.ioauthorizationpolicies.security.istio.io必须有五个,istio.io组合CRD必须有5个以上。

VirtualService等类型必须以CRD注册才能被kubectl识别。请全部应用Manifest,或只选择CustomResourceDefinition进行应用。Established条件由API服务器附加。

制作与注入对象命名空间相对应的对照组

名称空间mesh-lab制作并贴标签istio-injection=enabled请粘贴。名称空间legacy也可以制作,但请不要贴上****注入标签。还有/root/istio/out/injection-note.txt请在上面写上“即使贴上标签,现有帕德也保持原样,只有通过滚动才能再生成,才能放入侧卡”。

标签名称和值必须准确,否则会影响Webhook的namespaceSelector。请不要在对照组上贴标签。另外,请在备忘录中记录标签何时生效。

在图像工作负载中注入侧卡

/opt/lab/fixtures/istio/inject-target.yamlistioctl kube-inject转过来结果/root/istio/injected.yaml请保存为。Deployment的容器中paymentsistio-proxy必须有两个,初始化容器(istio-init或者istio-validation)必须存在,在pad模板中sidecar.istio.io/status必须要有注释。

istioctl kube-inject输入文件,输出注入的配置文件。原来的容器不能消失,初始化容器必须增加一个才能正常。

静态分析设置

istioctl analyze -n mesh-lab结果/root/istio/out/analyze.txt请保存到Error [不能留下)。还有/root/istio/out/analyze-note.txt请用两行文字写出analyze不是对流量进行的检查,而是在应用设置前后静态检查的内容。

analyze读取集群的设置资源,寻找相互不一致的地方。关键是不是发送流量,结果不能留下Error。

将注入结果解剖为JSON

/root/istio/out/sidecar.json请制作。键是containers(容器名称数组,istio-proxy包括),init_containers(1个以上排列),container_count(注射后容器数量),proxy_image(injected.yamlistio-proxy容器图像和字符串必须完全相同),interception(如何拦截交通的一句话——iptables必须包含这个单词)有五个。

不要直接用眼睛读取,请从注入的文件中提取值并写下来。图像字符串即使只差一个字符也会与实际值不同。

制作消息准备状态摘要

/root/istio/out/mesh-readiness.json请制作。istio_crds(群集的istio.io集团CRD实际数量),injection_namespaces(附有注射标签的命名空间阵列——mesh-lab有银子legacy不应该有),analyze_errors(0)是三个键。另外istioctl validate -f /root/istio/injected.yaml结果/root/istio/out/validate.txt请保存到。

将前一步制作的东西收集到一个文件中。数字在聚类中重新计数并填写,不能将未注入的命名空间放入列表中。