网格安装清单与边车的解剖
目标
安装Messenger时,可以确认实际进入群集的是什么,并通过结构说明侧卡注入的帕德与原来的帕德有什么不同。
为什么重要
Messenger引入失败的大部分都始于“不知道安装了什么”的状态。istioctl install虽然看起来像是一行结束,但后面会同时输入几十个CRD、Webhook设置、ConfigMap、控制平面工作负载。所以在实际工作中,在安装前manifest generate首先用眼睛看,然后写下将内容提交到存储库的方式。这样才能在升级时看到diff。注入也是如此。注入是在生成派德时webhook修改规格,只要贴上标签,不进行rollout,什么都不发生。用手确认这一事实,几秒钟内就能回答“贴上标签,但没有进入消息”。
在这个实习环境中,真正的Envoy不会处理流量。所以评分是看配置文件和静态分析。相反,解剖注入结果配置文件的训练在实际环境中也一样使用。
阶段
istioctl version输出/root/istio/out/version.txt请保存到(必须包含版本号)。然后在安装前进行检查(istioctl x precheck)包括标准错误在内/root/istio/out/precheck.txt请保存到。istioctl manifest generate结果/root/istio/manifest.yaml请保存为。CustomResourceDefinition科istiod必须进去kind:以开始的行数必须为10个以上。然后按种类统计数量。/root/istio/out/manifest-kinds.txt请保存到CustomResourceDefinition应该显示在这个统计中)。- 将宣言应用于群集,注册消息API类型。
virtualservices.networking.istio.io,destinationrules.networking.istio.io,gateways.networking.istio.io,peerauthentications.security.istio.io,authorizationpolicies.security.istio.io必须有五个,istio.io组合CRD必须有5个以上。 - 名称空间
mesh-lab制作并贴标签istio-injection=enabled请粘贴。名称空间legacy也可以制作,但请不要贴上****注入标签。还有/root/istio/out/injection-note.txt请在上面写上“即使贴上标签,现有帕德也保持原样,只有通过滚动才能再生成,才能放入侧卡”。 /opt/lab/fixtures/istio/inject-target.yaml在istioctl kube-inject转过来结果/root/istio/injected.yaml请保存为。Deployment的容器中payments哇istio-proxy必须有两个,初始化容器(istio-init或者istio-validation)必须存在,在pad模板中sidecar.istio.io/status必须要有注释。istioctl analyze -n mesh-lab结果/root/istio/out/analyze.txt请保存到Error [不能留下)。还有/root/istio/out/analyze-note.txt请用两行文字写出analyze不是对流量进行的检查,而是在应用设置前后静态检查的内容。/root/istio/out/sidecar.json请制作。键是containers(容器名称数组,istio-proxy包括),init_containers(1个以上排列),container_count(注射后容器数量),proxy_image(injected.yaml的istio-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请保存到。
参考
- 3号:
yq 'select(.kind == "CustomResourceDefinition")' /root/istio/manifest.yaml | kubectl apply -f -只有CRD才能先应用。但是,最好先应用Manifest 全部——5号用的注入设置istio-system的ConfigMap两个(istio-sidecar-injector,istio)中包含。kubectl create ns istio-system请先做。 - 5号:这个环境真的没有istiod pad。所以
kube-inject直接运行的话,尝试用istiod进行port-forward,但失败。在3次中应用的ConfigMap中注入模板(.data.config)·消息设置(.data.mesh)·价值(.data.values)分别提取为文件--injectConfigFile,--meshConfigFile,--valuesFile请转发。必须给三个——只给两个的话,找到剩下的一个再去聚类。(istioctl kube-inject --help在的例子中,这个方法就直接出现了。) - 8次CRD的数量不要用手数
kubectl get crd -o json | jq '[.items[] | select(.spec.group | test("istio.io"))] | length'请按以下选项进行选择。 istioctl validate通过时输出可能短或为空。空时结果为一行(검증 통과请添加等)以防止文件丢失。- 常见的错误1:7次的
proxy_image用记忆写下来。一定要injected.yaml请从里面取出来放入。 - 常见的错误2:在4次中
legacy完全不建立命名空间。只有注入的对照群才能证明标签的意义。
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请保存为。CustomResourceDefinition科istiod必须进去kind:以开始的行数必须为10个以上。然后按种类统计数量。/root/istio/out/manifest-kinds.txt请保存到CustomResourceDefinition应该显示在这个统计中)。
istioctl manifest generate在集群中什么都不做,只吐出YAML。有多少个是什么kind:只要数起以开始的字母就可以了。
将消息API类型注册到群集中
将宣言应用于群集,注册消息API类型。virtualservices.networking.istio.io,destinationrules.networking.istio.io,gateways.networking.istio.io,peerauthentications.security.istio.io,authorizationpolicies.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.yaml在istioctl kube-inject转过来结果/root/istio/injected.yaml请保存为。Deployment的容器中payments哇istio-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.yaml的istio-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请保存到。
将前一步制作的东西收集到一个文件中。数字在聚类中重新计数并填写,不能将未注入的命名空间放入列表中。