{"id":43684,"date":"2023-02-25T07:43:16","date_gmt":"2023-05-07T03:30:51","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/"},"modified":"2024-04-29T16:11:52","modified_gmt":"2024-04-29T08:11:52","slug":"%e5%ae%89%e8%a3%85linkerd","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/","title":{"rendered":"\u5b89\u88c5Linkerd"},"content":{"rendered":"<h1>Summary<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">k8s\u30c6\u30b9\u30c8\u74b0\u5883\u69cb\u7bc9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Linkerd \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<h1>\u5efa\u7acb\u76ee\u5f55<\/h1>\n<ul class=\"post-ul\">\u5168\u4f53\u76ee\u6b21<\/ul>\n<h1>\u73af\u5883<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Rancher: v2.5.3<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">kubernetes(Client): v1.19.4<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">kubernetes(Server): v1.19.4<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Linkerd: v2.9.1<\/ul>\n<h2>\u5b89\u88c5<\/h2>\n<h4>1. \u4e0b\u8f7d linkerd \u547d\u4ee4<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4f5c\u696d\u5834\u6240: ClientPC<\/ul>\n<\/li>\n<\/ul>\n<p>Linkerd Release Page<br \/>\nhttps:\/\/github.com\/linkerd\/linkerd2\/releases\/<\/p>\n<pre class=\"post-pre\"><code>$ sudo wget https:\/\/github.com\/linkerd\/linkerd2\/releases\/download\/stable-2.9.1\/linkerd2-cli-stable-2.9.1-linux-amd64 -O \/usr\/local\/bin\/linkerd\r\n$ sudo chmod +x \/usr\/local\/bin\/linkerd\r\n\r\n## version \u78ba\u8a8d ##\r\n$ linkerd version\r\nClient version: stable-2.9.1\r\nServer version: unavailable\r\n<\/code><\/pre>\n<h4>2. \u5b89\u88c5Linkerd<\/h4>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Linkerd Install Page<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/linkerd.io\/2\/tasks\/install\/<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">https:\/\/linkerd.io\/2\/reference\/cli\/install\/<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u4e8b\u524d\u74b0\u5883\u30c1\u30a7\u30c3\u30af<\/ul>\n<pre class=\"post-pre\"><code>$ linkerd check --pre\r\nkubernetes-api\r\n--------------\r\n\u221a can initialize the client\r\n\u221a can query the Kubernetes API\r\n\r\nkubernetes-version\r\n------------------\r\n\u221a is running the minimum Kubernetes API version\r\n\u221a is running the minimum kubectl version\r\n\r\npre-kubernetes-setup\r\n--------------------\r\n\u221a control plane namespace does not already exist\r\nW0103 18:09:21.089692    9491 warnings.go:67] apiextensions.k8s.io\/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io\/v1 CustomResourceDefinition\r\nW0103 18:09:21.288645    9491 warnings.go:67] apiextensions.k8s.io\/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io\/v1 CustomResourceDefinition\r\nW0103 18:09:21.890054    9491 warnings.go:67] admissionregistration.k8s.io\/v1beta1 MutatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 MutatingWebhookConfiguration\r\nW0103 18:09:22.488437    9491 warnings.go:67] admissionregistration.k8s.io\/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 ValidatingWebhookConfiguration\r\n\u221a can create non-namespaced resources\r\n\u221a can create ServiceAccounts\r\n\u221a can create Services\r\n\u221a can create Deployments\r\n\u221a can create CronJobs\r\n\u221a can create ConfigMaps\r\n\u221a can create Secrets\r\n\u221a can read Secrets\r\n\u221a can read extension-apiserver-authentication configmap\r\n\u221a no clock skew detected\r\n\r\npre-kubernetes-capability\r\n-------------------------\r\n\u221a has NET_ADMIN capability\r\n\u221a has NET_RAW capability\r\n\r\nlinkerd-version\r\n---------------\r\n\u221a can determine the latest version\r\n\u221a cli is up-to-date\r\n\r\nStatus check results are \u221a\r\n<\/code><\/pre>\n<ul class=\"post-ul\">Linkerd \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<pre class=\"post-pre\"><code>## Namespace(linkerd)\u306f\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u308b\r\n$ linkerd install | kubectl apply -f -\r\n## replicas\u3092\u5909\u66f4\u3059\u308b\u5834\u5408\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a2d\u5b9a\r\n$ linkerd install --controller-replicas 2 | kubectl apply -f -\r\n\r\n## \u78ba\u8a8d ##\r\n$ kubectl get deploy -n linkerd\r\nNAME                     READY   UP-TO-DATE   AVAILABLE   AGE\r\nlinkerd-controller       2\/2     2            2           2m2s\r\nlinkerd-destination      2\/2     2            2           2m1s\r\nlinkerd-grafana          1\/1     1            1           2m\r\nlinkerd-identity         2\/2     2            2           2m2s\r\nlinkerd-prometheus       1\/1     1            1           2m\r\nlinkerd-proxy-injector   2\/2     2            2           2m1s\r\nlinkerd-sp-validator     2\/2     2            2           2m1s\r\nlinkerd-tap              2\/2     2            2           2m\r\nlinkerd-web              1\/1     1            1           2m1s\r\n\r\n$ kubectl get pod -n linkerd\r\nNAME                                      READY   STATUS    RESTARTS   AGE\r\nlinkerd-controller-75c677bbb-gr2mv        2\/2     Running   0          2m18s\r\nlinkerd-controller-75c677bbb-plrdb        2\/2     Running   0          2m17s\r\nlinkerd-destination-759488cd56-5476f      2\/2     Running   0          2m17s\r\nlinkerd-destination-759488cd56-cbfsp      2\/2     Running   0          2m17s\r\nlinkerd-grafana-75fbbf55cb-lj85w          2\/2     Running   0          2m16s\r\nlinkerd-identity-79b444c8b8-fp7sm         2\/2     Running   0          2m18s\r\nlinkerd-identity-79b444c8b8-m2q2l         2\/2     Running   0          2m18s\r\nlinkerd-prometheus-768fff8db8-pwwdc       2\/2     Running   0          2m16s\r\nlinkerd-proxy-injector-8488f8fc9f-2fbqk   2\/2     Running   0          2m17s\r\nlinkerd-proxy-injector-8488f8fc9f-bln9v   2\/2     Running   0          2m17s\r\nlinkerd-sp-validator-69d6c7f868-rlxzt     2\/2     Running   0          2m17s\r\nlinkerd-sp-validator-69d6c7f868-tl2x4     2\/2     Running   0          2m17s\r\nlinkerd-tap-7578d8b6b7-4pf24              2\/2     Running   0          2m16s\r\nlinkerd-tap-7578d8b6b7-65rbf              2\/2     Running   0          2m16s\r\nlinkerd-web-6dbdf7b677-95s6n              2\/2     Running   0          2m17s\r\n\r\n$ kubectl get svc -n linkerd\r\nNAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE\r\nlinkerd-controller-api      ClusterIP   10.43.126.44    &lt;none&gt;        8085\/TCP            2m41s\r\nlinkerd-dst                 ClusterIP   10.43.190.104   &lt;none&gt;        8086\/TCP            2m40s\r\nlinkerd-dst-headless        ClusterIP   None            &lt;none&gt;        8086\/TCP            2m40s\r\nlinkerd-grafana             ClusterIP   10.43.13.127    &lt;none&gt;        3000\/TCP            2m39s\r\nlinkerd-identity            ClusterIP   10.43.91.158    &lt;none&gt;        8080\/TCP            2m41s\r\nlinkerd-identity-headless   ClusterIP   None            &lt;none&gt;        8080\/TCP            2m41s\r\nlinkerd-prometheus          ClusterIP   10.43.238.35    &lt;none&gt;        9090\/TCP            2m39s\r\nlinkerd-proxy-injector      ClusterIP   10.43.95.243    &lt;none&gt;        443\/TCP             2m40s\r\nlinkerd-sp-validator        ClusterIP   10.43.125.35    &lt;none&gt;        443\/TCP             2m40s\r\nlinkerd-tap                 ClusterIP   10.43.250.180   &lt;none&gt;        8088\/TCP,443\/TCP    2m40s\r\nlinkerd-web                 ClusterIP   10.43.130.61    &lt;none&gt;        8084\/TCP,9994\/TCP   2m40s\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u4e8b\u5f8c\u30c1\u30a7\u30c3\u30af<\/ul>\n<pre class=\"post-pre\"><code>$ linkerd check\r\nkubernetes-api\r\n--------------\r\n\u221a can initialize the client\r\n\u221a can query the Kubernetes API\r\n\r\nkubernetes-version\r\n------------------\r\n\u221a is running the minimum Kubernetes API version\r\n\u221a is running the minimum kubectl version\r\n\r\nlinkerd-existence\r\n-----------------\r\n\u221a 'linkerd-config' config map exists\r\n\u221a heartbeat ServiceAccount exist\r\n\u221a control plane replica sets are ready\r\n\u221a no unschedulable pods\r\n\u221a controller pod is running\r\n\u221a can initialize the client\r\n\u221a can query the control plane API\r\n\r\nlinkerd-config\r\n--------------\r\n\u221a control plane Namespace exists\r\n\u221a control plane ClusterRoles exist\r\n\u221a control plane ClusterRoleBindings exist\r\n\u221a control plane ServiceAccounts exist\r\nW0103 21:50:49.836339   11834 warnings.go:67] apiextensions.k8s.io\/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io\/v1 CustomResourceDefinition\r\n\u221a control plane CustomResourceDefinitions exist\r\nW0103 21:50:49.847975   11834 warnings.go:67] admissionregistration.k8s.io\/v1beta1 MutatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 MutatingWebhookConfiguration\r\n\u221a control plane MutatingWebhookConfigurations exist\r\nW0103 21:50:49.859010   11834 warnings.go:67] admissionregistration.k8s.io\/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 ValidatingWebhookConfiguration\r\n\u221a control plane ValidatingWebhookConfigurations exist\r\n\u221a control plane PodSecurityPolicies exist\r\n\r\nlinkerd-identity\r\n----------------\r\n\u221a certificate config is valid\r\n\u221a trust anchors are using supported crypto algorithm\r\n\u221a trust anchors are within their validity period\r\n\u221a trust anchors are valid for at least 60 days\r\n\u221a issuer cert is using supported crypto algorithm\r\n\u221a issuer cert is within its validity period\r\n\u221a issuer cert is valid for at least 60 days\r\n\u221a issuer cert is issued by the trust anchor\r\n\r\nlinkerd-webhooks-and-apisvc-tls\r\n-------------------------------\r\n\u221a tap API server has valid cert\r\n\u221a tap API server cert is valid for at least 60 days\r\nW0103 21:50:49.933442   11834 warnings.go:67] admissionregistration.k8s.io\/v1beta1 MutatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 MutatingWebhookConfiguration\r\n\u221a proxy-injector webhook has valid cert\r\n\u221a proxy-injector cert is valid for at least 60 days\r\nW0103 21:50:50.240829   11834 warnings.go:67] admissionregistration.k8s.io\/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 ValidatingWebhookConfiguration\r\n\u221a sp-validator webhook has valid cert\r\n\u221a sp-validator cert is valid for at least 60 days\r\n\r\nlinkerd-api\r\n-----------\r\n\u221a control plane pods are ready\r\n\u221a control plane self-check\r\n\u221a [kubernetes] control plane can talk to Kubernetes\r\n\u221a [prometheus] control plane can talk to Prometheus\r\n\u221a tap api service is running\r\n\r\nlinkerd-version\r\n---------------\r\n\u221a can determine the latest version\r\n\u221a cli is up-to-date\r\n\r\ncontrol-plane-version\r\n---------------------\r\n\u221a control plane is up-to-date\r\n\u221a control plane and cli versions match\r\nW0103 21:50:51.247437   11834 warnings.go:67] admissionregistration.k8s.io\/v1beta1 MutatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io\/v1 MutatingWebhookConfiguration\r\n\r\nlinkerd-prometheus\r\n------------------\r\n\u221a prometheus add-on service account exists\r\n\u221a prometheus add-on config map exists\r\n\u221a prometheus pod is running\r\n\r\nlinkerd-grafana\r\n---------------\r\n\u221a grafana add-on service account exists\r\n\u221a grafana add-on config map exists\r\n\u221a grafana pod is running\r\n\r\nStatus check results are \u221a\r\n<\/code><\/pre>\n<ul class=\"post-ul\">Dashboard \u78ba\u8a8d<\/ul>\n<pre class=\"post-pre\"><code>$ linkerd dashboard\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543637434c4406cd2120\/19-0.png\" alt=\"1-1.png\" \/><\/div>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543637434c4406cd2120\/20-1.png\" alt=\"2-1.png\" \/><\/div>\n<h2>\u786e\u8ba4\u884c\u52a8<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Namespace \u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Namespace\u306bProxy Injection\u8a2d\u5b9a\u3092\u8ffd\u52a0<\/ul>\n<pre class=\"post-pre\"><code>## \u30c6\u30b9\u30c8\u7528namespace\u4f5c\u6210\r\n$ kubectl create ns linkerd-test\r\n\r\n## \u300clinkerd-test\u300dnamespace\u306b\u300clinkerd.io\/inject=enabled\u300dannotation\u3092\u8ffd\u52a0 ##\r\n$ kubectl annotate namespace linkerd-test linkerd.io\/inject=enabled\r\n\r\n## \u78ba\u8a8d ##\r\n$ kubectl describe ns linkerd-test | grep -i linkerd.io\r\n              linkerd.io\/inject: enabled\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u30b5\u30f3\u30d7\u30ebPod\u4f5c\u6210<\/ul>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Service<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">linkerd-test<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx-svc<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">selector<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx<\/span>\r\n  <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">port<\/span>\r\n    <span class=\"na\">port<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n    <span class=\"na\">targetPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n<span class=\"nn\">---<\/span>\r\n<span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Pod<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx<\/span>\r\n  <span class=\"na\">labels<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">app<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">linkerd-test<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">containers<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx<\/span>\r\n    <span class=\"na\">image<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx:1.19.2<\/span>\r\n    <span class=\"na\">imagePullPolicy<\/span><span class=\"pi\">:<\/span> <span class=\"s\">IfNotPresent<\/span>\r\n    <span class=\"na\">ports<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">http<\/span>\r\n      <span class=\"na\">containerPort<\/span><span class=\"pi\">:<\/span> <span class=\"m\">80<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ kubectl apply -f nginx-linkerd-test.yaml\r\n\r\n## \u78ba\u8a8d ##\r\n$ kubectl get pod -n linkerd-test\r\nNAME    READY   STATUS    RESTARTS   AGE\r\nnginx   2\/2     Running   0          20s\r\n\r\n$ kubectl -n linkerd-test get pod nginx -o jsonpath='{.spec.containers[*].name}'\r\nnginx1 linkerd-proxy\r\n<\/code><\/pre>\n<p>\u7531\u4e8eLinkerd\u6ca1\u6709\u63d0\u4f9b\u4e13\u7528\u7684Ingress\uff0c\u56e0\u6b64\u53ef\u4ee5\u5229\u7528\u6b63\u5728\u4f7f\u7528\u7684Ingress\u3002<\/p>\n<ul class=\"post-ul\">nginx ingress controller\u306bproxy\u8ffd\u52a0<\/ul>\n<pre class=\"post-pre\"><code>## ingress controller\u540d\u78ba\u8a8d\r\n$ kubectl -n ingress-system get deploy\r\nNAME                                     READY   UP-TO-DATE   AVAILABLE   AGE\r\nnginx-ingress-ingress-nginx-controller   1\/1     1            1           11d\r\n\r\n## controller\u306bproxy\u8ffd\u52a0\r\n$ kubectl get deployment nginx-ingress-ingress-nginx-controller -n ingress-system -o yaml | linkerd inject --ingress - | kubectl apply -f -\r\n\r\n## proxy\u8ffd\u52a0\u5f8c\u3001\u78ba\u8a8d\r\n$ kubectl -n ingress-system get pod\r\nNAME                                                      READY   STATUS    RESTARTS   AGE\r\nnginx-ingress-ingress-nginx-controller-6d69c9499f-hz26w   2\/2     Running   0          44s\r\n\r\n$ kubectl get pod nginx-ingress-ingress-nginx-controller-6d69c9499f-hz26w -n ingress-system -o jsonpath='{.spec.containers[*].name}'\r\ncontroller linkerd-proxy\r\n<\/code><\/pre>\n<ul class=\"post-ul\">Ingress \u4f5c\u6210<\/ul>\n<pre class=\"post-pre\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">networking.k8s.io\/v1<\/span>\r\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Ingress<\/span>\r\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">annotations<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"s\">kubernetes.io\/ingress.class<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">nginx\"<\/span>\r\n<span class=\"c1\"># linkerd\u306e\u5404\u6a5f\u80fd\u3092\u4f7f\u3046\u305f\u3081\u3001\u4ee5\u4e0bannotaion\u3092\u8ffd\u52a0<\/span>\r\n    <span class=\"s\">nginx.ingress.kubernetes.io\/configuration-snippet<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">|<\/span>\r\n      <span class=\"s\">proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;<\/span>\r\n      <span class=\"s\">grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx-ingress<\/span>\r\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">linkerd-test<\/span>\r\n<span class=\"na\">spec<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">rules<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"pi\">-<\/span> <span class=\"na\">host<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx-linkerd.test.local<\/span>\r\n    <span class=\"na\">http<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">paths<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"pi\">-<\/span> <span class=\"na\">path<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/<\/span>\r\n        <span class=\"na\">pathType<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Prefix<\/span> \r\n        <span class=\"na\">backend<\/span><span class=\"pi\">:<\/span>\r\n          <span class=\"na\">service<\/span><span class=\"pi\">:<\/span>\r\n            <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">nginx-svc<\/span>\r\n            <span class=\"na\">port<\/span><span class=\"pi\">:<\/span>\r\n              <span class=\"na\">number<\/span><span class=\"pi\">:<\/span> <span class=\"m\">8080<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>$ kubectl apply -f test-ingress.yaml\r\n<\/code><\/pre>\n<ul class=\"post-ul\">Nginx ingress\u306eLoad Balancer IP(EXTERNAL-IP) \u78ba\u8a8d<\/ul>\n<pre class=\"post-pre\"><code>$ kubectl get svc -n ingress-system\r\nNAME                                               TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                      AGE\r\nnginx-ingress-ingress-nginx-controller             LoadBalancer   10.43.195.120   192.168.245.111   80:31499\/TCP,443:30127\/TCP   20h\r\nnginx-ingress-ingress-nginx-controller-admission   ClusterIP      10.43.35.123    &lt;none&gt;            443\/TCP                      20h\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">hosts \u8a2d\u5b9a\u8ffd\u52a0<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Load Balancer\u306eIP\u3068Ingress\u3067\u8a2d\u5b9a\u3057\u305fhost\u3092\u7d10\u3065\u3051<\/ul>\n<pre class=\"post-pre\"><code>$ cat \/etc\/hosts\r\n........\r\n192.168.245.111 nginx-linkerd.test.local\r\n........\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\u63a5\u7d9a\u78ba\u8a8d<\/ul>\n<pre class=\"post-pre\"><code>$ curl -I http:\/\/nginx-linkerd.test.local\r\nHTTP\/1.1 200 OK\r\n.........\r\n.........\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Summary k8s\u30c6\u30b9\u30c8\u74b0\u5883\u69cb\u7bc9 &nbsp; Linkerd \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u5efa\u7acb\u76ee\u5f55 \u5168\u4f53\u76ee\u6b21 \u73af\u5883 R [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-43684","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5b89\u88c5Linkerd - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5b89\u88c5linkerd\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5b89\u88c5Linkerd\" \/>\n<meta property=\"og:description\" content=\"Summary k8s\u30c6\u30b9\u30c8\u74b0\u5883\u69cb\u7bc9 &nbsp; Linkerd \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u5efa\u7acb\u76ee\u5f55 \u5168\u4f53\u76ee\u6b21 \u73af\u5883 R [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5b89\u88c5linkerd\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-07T03:30:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T08:11:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543637434c4406cd2120\/19-0.png\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/\",\"name\":\"\u5b89\u88c5Linkerd - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-05-07T03:30:51+00:00\",\"dateModified\":\"2024-04-29T08:11:52+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5b89\u88c5Linkerd\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5b89\u88c5Linkerd - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5b89\u88c5linkerd\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5b89\u88c5Linkerd","og_description":"Summary k8s\u30c6\u30b9\u30c8\u74b0\u5883\u69cb\u7bc9 &nbsp; Linkerd \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u5efa\u7acb\u76ee\u5f55 \u5168\u4f53\u76ee\u6b21 \u73af\u5883 R [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5b89\u88c5linkerd\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-05-07T03:30:51+00:00","article_modified_time":"2024-04-29T08:11:52+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d543637434c4406cd2120\/19-0.png"}],"author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"7 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/","name":"\u5b89\u88c5Linkerd - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-05-07T03:30:51+00:00","dateModified":"2024-04-29T08:11:52+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5b89\u88c5Linkerd"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%89%e8%a3%85linkerd\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43684","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=43684"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43684\/revisions"}],"predecessor-version":[{"id":86298,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43684\/revisions\/86298"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=43684"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=43684"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=43684"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}