kubernetes-handbook/usecases/linkerd-user-guide.html

2264 lines
106 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML>
2017-09-19 22:01:07 +08:00
<html lang="zh-hans" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>5.1.2.1 Linkerd 使用指南 · Kubernetes Handbook</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.2">
<meta name="author" content="Jimmy Song">
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-splitter/splitter.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-page-toc-button/plugin.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-image-captions/image-captions.css">
2017-10-09 15:28:05 +08:00
<link rel="stylesheet" href="../gitbook/gitbook-plugin-back-to-top-button/plugin.css">
2017-10-09 15:28:05 +08:00
<link rel="stylesheet" href="../gitbook/gitbook-plugin-search-plus/search.css">
2017-09-19 21:38:03 +08:00
2017-10-09 15:28:05 +08:00
<link rel="stylesheet" href="../gitbook/gitbook-plugin-tbfed-pagefooter/footer.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="../gitbook/gitbook-plugin-fontsettings/website.css">
2017-10-09 15:28:05 +08:00
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="../gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="../gitbook/images/favicon.ico" type="image/x-icon">
2017-09-20 21:55:19 +08:00
<link rel="next" href="big-data.html" />
<link rel="prev" href="linkerd.html" />
2017-10-09 15:28:05 +08:00
<link rel="shortcut icon" href='../favicon.ico' type="image/x-icon">
<link rel="bookmark" href='../favicon.ico' type="image/x-icon">
<style>
@media only screen and (max-width: 640px) {
.book-header .hidden-mobile {
display: none;
}
}
</style>
<script>
window["gitbook-plugin-github-buttons"] = {"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"};
</script>
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
2017-09-19 22:01:07 +08:00
<input type="text" placeholder="输入并搜索" />
</div>
<nav role="navigation">
<ul class="summary">
2017-10-09 15:28:05 +08:00
<li>
<a href="https://jimmysong.io" target="_blank" class="custom-link">Home</a>
</li>
2017-10-09 15:28:05 +08:00
<li class="divider"></li>
<li class="chapter " data-level="1.1" data-path="../">
<a href="../">
序言
</a>
</li>
<li class="chapter " data-level="1.2" data-path="../cloud-native/kubernetes-and-cloud-native-app-overview.html">
<a href="../cloud-native/kubernetes-and-cloud-native-app-overview.html">
1. Kubernetes与云原生应用概览
</a>
</li>
<li class="chapter " data-level="1.3" data-path="../concepts/">
<a href="../concepts/">
2. 概念原理
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.1" data-path="../concepts/concepts.html">
<a href="../concepts/concepts.html">
2.1 设计理念
</a>
</li>
<li class="chapter " data-level="1.3.2" data-path="../concepts/objects.html">
<a href="../concepts/objects.html">
2017-09-03 13:29:38 +08:00
2.2 Objects
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.2.1" data-path="../concepts/pod-overview.html">
<a href="../concepts/pod-overview.html">
2.2.1 Pod
</a>
<ul class="articles">
<li class="chapter " data-level="1.3.2.1.1" data-path="../concepts/pod.html">
<a href="../concepts/pod.html">
2.2.1.1 Pod解析
</a>
2017-08-31 23:28:33 +08:00
</li>
<li class="chapter " data-level="1.3.2.1.2" data-path="../concepts/init-containers.html">
2017-08-31 23:28:33 +08:00
<a href="../concepts/init-containers.html">
2.2.1.2 Init容器
</a>
2017-09-03 15:58:39 +08:00
</li>
<li class="chapter " data-level="1.3.2.1.3" data-path="../concepts/pod-security-policy.html">
2017-09-03 15:58:39 +08:00
<a href="../concepts/pod-security-policy.html">
2.2.1.3 Pod安全策略
</a>
2017-09-17 15:39:26 +08:00
</li>
<li class="chapter " data-level="1.3.2.1.4" data-path="../concepts/pod-lifecycle.html">
2017-09-17 15:39:26 +08:00
<a href="../concepts/pod-lifecycle.html">
2.2.1.4 Pod的生命周期
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.3.2.2" data-path="../concepts/node.html">
<a href="../concepts/node.html">
2.2.2 Node
</a>
</li>
<li class="chapter " data-level="1.3.2.3" data-path="../concepts/namespace.html">
<a href="../concepts/namespace.html">
2.2.3 Namespace
</a>
</li>
<li class="chapter " data-level="1.3.2.4" data-path="../concepts/service.html">
<a href="../concepts/service.html">
2.2.4 Service
</a>
</li>
<li class="chapter " data-level="1.3.2.5" data-path="../concepts/volume.html">
<a href="../concepts/volume.html">
2.2.5 Volume和Persistent Volume
</a>
</li>
<li class="chapter " data-level="1.3.2.6" data-path="../concepts/deployment.html">
<a href="../concepts/deployment.html">
2.2.6 Deployment
</a>
</li>
<li class="chapter " data-level="1.3.2.7" data-path="../concepts/secret.html">
<a href="../concepts/secret.html">
2.2.7 Secret
</a>
</li>
<li class="chapter " data-level="1.3.2.8" data-path="../concepts/statefulset.html">
<a href="../concepts/statefulset.html">
2.2.8 StatefulSet
</a>
</li>
<li class="chapter " data-level="1.3.2.9" data-path="../concepts/daemonset.html">
<a href="../concepts/daemonset.html">
2.2.9 DaemonSet
</a>
</li>
<li class="chapter " data-level="1.3.2.10" data-path="../concepts/serviceaccount.html">
<a href="../concepts/serviceaccount.html">
2.2.10 ServiceAccount
</a>
</li>
<li class="chapter " data-level="1.3.2.11" data-path="../concepts/replicaset.html">
<a href="../concepts/replicaset.html">
2.2.11 ReplicationController和ReplicaSet
</a>
</li>
<li class="chapter " data-level="1.3.2.12" data-path="../concepts/job.html">
<a href="../concepts/job.html">
2.2.12 Job
</a>
</li>
<li class="chapter " data-level="1.3.2.13" data-path="../concepts/cronjob.html">
<a href="../concepts/cronjob.html">
2.2.13 CronJob
</a>
</li>
<li class="chapter " data-level="1.3.2.14" data-path="../concepts/ingress.html">
<a href="../concepts/ingress.html">
2.2.14 Ingress
</a>
</li>
<li class="chapter " data-level="1.3.2.15" data-path="../concepts/configmap.html">
<a href="../concepts/configmap.html">
2.2.15 ConfigMap
</a>
</li>
<li class="chapter " data-level="1.3.2.16" data-path="../concepts/horizontal-pod-autoscaling.html">
<a href="../concepts/horizontal-pod-autoscaling.html">
2.2.16 Horizontal Pod Autoscaling
</a>
</li>
<li class="chapter " data-level="1.3.2.17" data-path="../concepts/label.html">
<a href="../concepts/label.html">
2.2.17 Label
</a>
2017-09-03 15:58:39 +08:00
</li>
<li class="chapter " data-level="1.3.2.18" data-path="../concepts/garbage-collection.html">
2017-09-03 15:58:39 +08:00
<a href="../concepts/garbage-collection.html">
2.2.18 垃圾收集
</a>
</li>
<li class="chapter " data-level="1.3.2.19" data-path="../concepts/network-policy.html">
2017-09-03 15:58:39 +08:00
<a href="../concepts/network-policy.html">
2.2.19 NetworkPolicy
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4" data-path="../guide/">
<a href="../guide/">
3. 用户指南
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1" data-path="../guide/resource-configuration.html">
<a href="../guide/resource-configuration.html">
2017-09-28 21:20:49 +08:00
3.1 资源对象配置
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.1.1" data-path="../guide/configure-liveness-readiness-probes.html">
<a href="../guide/configure-liveness-readiness-probes.html">
3.1.1 配置Pod的liveness和readiness探针
</a>
</li>
<li class="chapter " data-level="1.4.1.2" data-path="../guide/configure-pod-service-account.html">
<a href="../guide/configure-pod-service-account.html">
3.1.2 配置Pod的Service Account
</a>
2017-09-28 21:20:49 +08:00
</li>
<li class="chapter " data-level="1.4.1.3" data-path="../guide/secret-configuration.html">
2017-09-28 21:20:49 +08:00
<a href="../guide/secret-configuration.html">
3.1.3 Secret配置
</a>
2017-10-10 14:51:45 +08:00
</li>
<li class="chapter " data-level="1.4.1.4" data-path="../guide/resource-quota-management.html">
2017-10-10 14:51:45 +08:00
<a href="../guide/resource-quota-management.html">
3.2.3 管理namespace中的资源配额
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.2" data-path="../guide/command-usage.html">
<a href="../guide/command-usage.html">
3.2 命令使用
</a>
<ul class="articles">
2017-11-03 17:48:10 +08:00
<li class="chapter " data-level="1.4.2.1" data-path="../guide/docker-cli-to-kubectl.html">
<a href="../guide/docker-cli-to-kubectl.html">
3.2.1 docker用户过度到kubectl命令行指南
</a>
</li>
<li class="chapter " data-level="1.4.2.2" data-path="../guide/using-kubectl.html">
<a href="../guide/using-kubectl.html">
2017-11-03 17:48:10 +08:00
3.2.2 kubectl命令概览
</a>
</li>
2017-11-03 17:48:10 +08:00
<li class="chapter " data-level="1.4.2.3" data-path="../guide/kubectl-cheatsheet.html">
2017-11-03 17:48:10 +08:00
<a href="../guide/kubectl-cheatsheet.html">
2017-11-03 17:48:10 +08:00
3.2.3 kubectl命令技巧大全
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.3" data-path="../guide/cluster-security-management.html">
<a href="../guide/cluster-security-management.html">
3.3 集群安全性管理
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.3.1" data-path="../guide/managing-tls-in-a-cluster.html">
<a href="../guide/managing-tls-in-a-cluster.html">
3.3.1 管理集群中的TLS
</a>
</li>
<li class="chapter " data-level="1.4.3.2" data-path="../guide/kubelet-authentication-authorization.html">
<a href="../guide/kubelet-authentication-authorization.html">
3.3.2 kubelet的认证授权
</a>
</li>
<li class="chapter " data-level="1.4.3.3" data-path="../guide/tls-bootstrapping.html">
<a href="../guide/tls-bootstrapping.html">
3.3.3 TLS bootstrap
</a>
2017-08-31 14:23:44 +08:00
</li>
<li class="chapter " data-level="1.4.3.4" data-path="../guide/kubectl-user-authentication-authorization.html">
2017-08-31 14:23:44 +08:00
<a href="../guide/kubectl-user-authentication-authorization.html">
2017-11-02 16:33:01 +08:00
3.3.4 创建用户认证授权的kubeconfig文件
2017-08-31 14:23:44 +08:00
</a>
</li>
<li class="chapter " data-level="1.4.3.5" data-path="../guide/rbac.html">
2017-08-31 14:23:44 +08:00
<a href="../guide/rbac.html">
3.3.5 RBAC——基于角色的访问控制
</a>
2017-09-07 14:13:59 +08:00
</li>
<li class="chapter " data-level="1.4.3.6" data-path="../guide/ip-masq-agent.html">
2017-09-07 14:13:59 +08:00
<a href="../guide/ip-masq-agent.html">
3.3.6 IP伪装代理
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.4" data-path="../guide/access-kubernetes-cluster.html">
<a href="../guide/access-kubernetes-cluster.html">
3.4 访问 Kubernetes 集群
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.4.1" data-path="../guide/access-cluster.html">
<a href="../guide/access-cluster.html">
3.4.1 访问集群
</a>
</li>
<li class="chapter " data-level="1.4.4.2" data-path="../guide/authenticate-across-clusters-kubeconfig.html">
<a href="../guide/authenticate-across-clusters-kubeconfig.html">
3.4.2 使用 kubeconfig 文件配置跨集群认证
</a>
</li>
<li class="chapter " data-level="1.4.4.3" data-path="../guide/connecting-to-applications-port-forward.html">
<a href="../guide/connecting-to-applications-port-forward.html">
3.4.3 通过端口转发访问集群中的应用程序
</a>
</li>
<li class="chapter " data-level="1.4.4.4" data-path="../guide/service-access-application-cluster.html">
<a href="../guide/service-access-application-cluster.html">
3.4.4 使用 service 访问群集中的应用程序
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.4.5" data-path="../guide/application-development-deployment-flow.html">
<a href="../guide/application-development-deployment-flow.html">
3.5 在kubernetes中开发部署应用
</a>
<ul class="articles">
<li class="chapter " data-level="1.4.5.1" data-path="../guide/deploy-applications-in-kubernetes.html">
<a href="../guide/deploy-applications-in-kubernetes.html">
3.5.1 适用于kubernetes的应用开发部署流程
</a>
</li>
<li class="chapter " data-level="1.4.5.2" data-path="../guide/migrating-hadoop-yarn-to-kubernetes.html">
<a href="../guide/migrating-hadoop-yarn-to-kubernetes.html">
3.5.2 迁移传统应用到kubernetes中——以Hadoop YARN为例
</a>
2017-10-23 13:40:58 +08:00
</li>
<li class="chapter " data-level="1.4.5.3" data-path="../guide/using-statefulset.html">
<a href="../guide/using-statefulset.html">
3.5.3 使用StatefulSet部署用状态应用
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5" data-path="../practice/">
<a href="../practice/">
4. 最佳实践
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1" data-path="../practice/install-kbernetes1.6-on-centos.html">
<a href="../practice/install-kbernetes1.6-on-centos.html">
4.1 在CentOS上部署kubernetes1.6集群
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.1.1" data-path="../practice/create-tls-and-secret-key.html">
<a href="../practice/create-tls-and-secret-key.html">
4.1.1 创建TLS证书和秘钥
</a>
</li>
<li class="chapter " data-level="1.5.1.2" data-path="../practice/create-kubeconfig.html">
<a href="../practice/create-kubeconfig.html">
4.1.2 创建kubeconfig文件
</a>
</li>
<li class="chapter " data-level="1.5.1.3" data-path="../practice/etcd-cluster-installation.html">
<a href="../practice/etcd-cluster-installation.html">
4.1.3 创建高可用etcd集群
</a>
</li>
<li class="chapter " data-level="1.5.1.4" data-path="../practice/kubectl-installation.html">
<a href="../practice/kubectl-installation.html">
4.1.4 安装kubectl命令行工具
</a>
</li>
<li class="chapter " data-level="1.5.1.5" data-path="../practice/master-installation.html">
<a href="../practice/master-installation.html">
4.1.5 部署master节点
</a>
</li>
<li class="chapter " data-level="1.5.1.6" data-path="../practice/node-installation.html">
<a href="../practice/node-installation.html">
4.1.6 部署node节点
</a>
</li>
<li class="chapter " data-level="1.5.1.7" data-path="../practice/kubedns-addon-installation.html">
<a href="../practice/kubedns-addon-installation.html">
4.1.7 安装kubedns插件
</a>
</li>
<li class="chapter " data-level="1.5.1.8" data-path="../practice/dashboard-addon-installation.html">
<a href="../practice/dashboard-addon-installation.html">
4.1.8 安装dashboard插件
</a>
</li>
<li class="chapter " data-level="1.5.1.9" data-path="../practice/heapster-addon-installation.html">
<a href="../practice/heapster-addon-installation.html">
4.1.9 安装heapster插件
</a>
</li>
<li class="chapter " data-level="1.5.1.10" data-path="../practice/efk-addon-installation.html">
<a href="../practice/efk-addon-installation.html">
4.1.10 安装EFK插件
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.2" data-path="../practice/service-discovery-and-loadbalancing.html">
<a href="../practice/service-discovery-and-loadbalancing.html">
4.2 服务发现与负载均衡
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.2.1" data-path="../practice/traefik-ingress-installation.html">
<a href="../practice/traefik-ingress-installation.html">
4.2.1 安装Traefik ingress
</a>
</li>
<li class="chapter " data-level="1.5.2.2" data-path="../practice/distributed-load-test.html">
<a href="../practice/distributed-load-test.html">
4.2.2 分布式负载测试
</a>
</li>
<li class="chapter " data-level="1.5.2.3" data-path="../practice/network-and-cluster-perfermance-test.html">
<a href="../practice/network-and-cluster-perfermance-test.html">
4.2.3 网络和集群性能测试
</a>
</li>
<li class="chapter " data-level="1.5.2.4" data-path="../practice/edge-node-configuration.html">
<a href="../practice/edge-node-configuration.html">
4.2.4 边缘节点配置
</a>
2017-10-27 19:09:01 +08:00
</li>
<li class="chapter " data-level="1.5.2.5" data-path="../practice/nginx-ingress-installation.html">
<a href="../practice/nginx-ingress-installation.html">
2017-10-27 19:16:49 +08:00
4.2.5 安装Nginx ingress
2017-10-27 19:09:01 +08:00
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.3" data-path="../practice/operation.html">
<a href="../practice/operation.html">
4.3 运维管理
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.3.1" data-path="../practice/service-rolling-update.html">
<a href="../practice/service-rolling-update.html">
4.3.1 服务滚动升级
</a>
</li>
<li class="chapter " data-level="1.5.3.2" data-path="../practice/app-log-collection.html">
<a href="../practice/app-log-collection.html">
4.3.2 应用日志收集
</a>
</li>
<li class="chapter " data-level="1.5.3.3" data-path="../practice/configuration-best-practice.html">
<a href="../practice/configuration-best-practice.html">
4.3.3 配置最佳实践
</a>
</li>
<li class="chapter " data-level="1.5.3.4" data-path="../practice/monitor.html">
<a href="../practice/monitor.html">
4.3.4 集群及应用监控
</a>
</li>
2017-10-27 11:59:37 +08:00
<li class="chapter " data-level="1.5.3.5" data-path="../practice/data-persistence-problem.html">
<a href="../practice/data-persistence-problem.html">
4.3.6 数据持久化问题
</a>
2017-09-03 15:58:39 +08:00
</li>
2017-10-27 11:59:37 +08:00
<li class="chapter " data-level="1.5.3.6" data-path="../practice/manage-compute-resources-container.html">
2017-09-03 15:58:39 +08:00
<a href="../practice/manage-compute-resources-container.html">
4.3.7 管理容器的计算资源
</a>
</li>
2017-10-27 11:59:37 +08:00
<li class="chapter " data-level="1.5.3.7" data-path="../practice/using-prometheus-to-monitor-kuberentes-cluster.html">
<a href="../practice/using-prometheus-to-monitor-kuberentes-cluster.html">
4.3.8 使用Prometheus监控kubernetes集群
</a>
</li>
2017-10-27 11:59:37 +08:00
<li class="chapter " data-level="1.5.3.8" data-path="../practice/using-heapster-to-get-object-metrics.html">
<a href="../practice/using-heapster-to-get-object-metrics.html">
4.3.9 使用Heapster获取集群和对象的metric数据
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.4" data-path="../practice/storage.html">
<a href="../practice/storage.html">
4.4 存储管理
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.4.1" data-path="../practice/glusterfs.html">
<a href="../practice/glusterfs.html">
4.4.1 GlusterFS
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.4.1.1" data-path="../practice/using-glusterfs-for-persistent-storage.html">
<a href="../practice/using-glusterfs-for-persistent-storage.html">
4.4.1.1 使用GlusterFS做持久化存储
</a>
</li>
<li class="chapter " data-level="1.5.4.1.2" data-path="../practice/storage-for-containers-using-glusterfs-with-openshift.html">
<a href="../practice/storage-for-containers-using-glusterfs-with-openshift.html">
4.4.1.2 在OpenShift中使用GlusterFS做持久化存储
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.4.2" data-path="../practice/cephfs.html">
<a href="../practice/cephfs.html">
4.4.2 CephFS
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.4.2.1" data-path="../practice/using-ceph-for-persistent-storage.html">
<a href="../practice/using-ceph-for-persistent-storage.html">
4.4.2.1 使用Ceph做持久化存储
</a>
</li>
</ul>
</li>
</ul>
2017-10-19 15:31:08 +08:00
</li>
<li class="chapter " data-level="1.5.5" data-path="../practice/services-management-tool.html">
2017-10-19 15:31:08 +08:00
<a href="../practice/services-management-tool.html">
4.5 服务编排管理
</a>
2017-10-20 16:22:43 +08:00
<ul class="articles">
<li class="chapter " data-level="1.5.5.1" data-path="../practice/helm.html">
<a href="../practice/helm.html">
2017-10-25 17:12:37 +08:00
4.5.1 使用Helm管理kubernetes应用
2017-10-20 16:22:43 +08:00
</a>
2017-10-27 11:59:37 +08:00
</li>
<li class="chapter " data-level="1.5.5.2" data-path="../practice/create-private-charts-repo.html">
<a href="../practice/create-private-charts-repo.html">
4.5.2 构建私有Chart仓库
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.6" data-path="../practice/ci-cd.html">
<a href="../practice/ci-cd.html">
4.6 持续集成与发布
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.6.1" data-path="../practice/jenkins-ci-cd.html">
<a href="../practice/jenkins-ci-cd.html">
4.6.1 使用Jenkins进行持续集成与发布
</a>
</li>
<li class="chapter " data-level="1.5.6.2" data-path="../practice/drone-ci-cd.html">
<a href="../practice/drone-ci-cd.html">
4.6.2 使用Drone进行持续集成与发布
</a>
2017-11-02 16:33:01 +08:00
</li>
</ul>
</li>
<li class="chapter " data-level="1.5.7" data-path="../practice/update-and-upgrade.html">
<a href="../practice/update-and-upgrade.html">
4.7 更新与升级
</a>
<ul class="articles">
<li class="chapter " data-level="1.5.7.1" data-path="../practice/manually-upgrade.html">
<a href="../practice/manually-upgrade.html">
4.7.1 手动升级kubernetes集群
</a>
</li>
<li class="chapter " data-level="1.5.7.2" data-path="../practice/dashboard-upgrade.html">
<a href="../practice/dashboard-upgrade.html">
4.7.2 升级dashboard
</a>
2017-10-20 16:22:43 +08:00
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6" data-path="./">
<a href="./">
5. 领域应用
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1" data-path="microservices.html">
<a href="microservices.html">
5.1 微服务架构
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.1.1" data-path="service-discovery-in-microservices.html">
2017-09-20 21:55:19 +08:00
<a href="service-discovery-in-microservices.html">
5.1.1 微服务中的服务发现
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6.2" data-path="service-mesh.html">
2017-09-20 21:55:19 +08:00
<a href="service-mesh.html">
5.2 Service Mesh 服务网格
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.2.1" data-path="istio.html">
<a href="istio.html">
5.1.1 Istio
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.2.1.1" data-path="istio-installation.html">
<a href="istio-installation.html">
2017-11-07 23:57:26 +08:00
5.1.1.1 安装并试用Istio service mesh
</a>
</li>
<li class="chapter " data-level="1.6.2.1.2" data-path="configuring-request-routing.html">
<a href="configuring-request-routing.html">
5.1.1.2 配置请求的路由规则
</a>
2017-11-07 23:57:26 +08:00
</li>
<li class="chapter " data-level="1.6.2.1.3" data-path="install-and-expand-istio-mesh.html">
<a href="install-and-expand-istio-mesh.html">
5.1.1.3 安装和拓展Istio service mesh
</a>
</li>
<li class="chapter " data-level="1.6.2.1.4" data-path="integrating-vms.html">
<a href="integrating-vms.html">
5.1.1.4 集成虚拟机
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6.2.2" data-path="linkerd.html">
<a href="linkerd.html">
5.1.2 Linkerd
</a>
<ul class="articles">
<li class="chapter active" data-level="1.6.2.2.1" data-path="linkerd-user-guide.html">
<a href="linkerd-user-guide.html">
5.1.2.1 Linkerd 使用指南
</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="chapter " data-level="1.6.3" data-path="big-data.html">
<a href="big-data.html">
5.2 大数据
</a>
<ul class="articles">
<li class="chapter " data-level="1.6.3.1" data-path="spark-standalone-on-kubernetes.html">
2017-08-30 14:20:52 +08:00
<a href="spark-standalone-on-kubernetes.html">
2017-08-30 14:20:52 +08:00
5.2.1 Spark standalone on Kubernetes
</a>
2017-08-31 14:23:44 +08:00
</li>
<li class="chapter " data-level="1.6.3.2" data-path="running-spark-with-kubernetes-native-scheduler.html">
2017-08-31 14:23:44 +08:00
2017-09-14 15:57:50 +08:00
<a href="running-spark-with-kubernetes-native-scheduler.html">
2017-08-31 14:23:44 +08:00
5.2.2 运行支持kubernetes原生调度的Spark程序
</a>
</li>
</ul>
2017-08-30 16:52:33 +08:00
</li>
<li class="chapter " data-level="1.6.4" data-path="serverless.html">
2017-08-30 16:52:33 +08:00
<a href="serverless.html">
5.3 Serverless架构
</a>
2017-10-27 19:09:01 +08:00
</li>
<li class="chapter " data-level="1.6.5" data-path="edge-computing.html">
<a href="edge-computing.html">
5.4 边缘计算
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.7" data-path="../develop/">
<a href="../develop/">
6. 开发指南
</a>
<ul class="articles">
<li class="chapter " data-level="1.7.1" data-path="../develop/developing-environment.html">
<a href="../develop/developing-environment.html">
6.1 开发环境搭建
</a>
</li>
<li class="chapter " data-level="1.7.2" data-path="../develop/testing.html">
<a href="../develop/testing.html">
6.2 单元测试和集成测试
</a>
</li>
<li class="chapter " data-level="1.7.3" data-path="../develop/client-go-sample.html">
<a href="../develop/client-go-sample.html">
6.3 client-go示例
</a>
</li>
<li class="chapter " data-level="1.7.4" data-path="../develop/contribute.html">
<a href="../develop/contribute.html">
6.4 社区贡献
</a>
2017-10-23 19:09:41 +08:00
</li>
<li class="chapter " data-level="1.7.5" data-path="../develop/minikube.html">
<a href="../develop/minikube.html">
6.5 Minikube
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.8" data-path="../appendix/">
<a href="../appendix/">
7. 附录
</a>
<ul class="articles">
<li class="chapter " data-level="1.8.1" data-path="../appendix/docker-best-practice.html">
<a href="../appendix/docker-best-practice.html">
7.1 Docker最佳实践
</a>
</li>
<li class="chapter " data-level="1.8.2" data-path="../appendix/issues.html">
<a href="../appendix/issues.html">
7.2 问题记录
</a>
</li>
<li class="chapter " data-level="1.8.3" data-path="../appendix/tricks.html">
<a href="../appendix/tricks.html">
7.3 使用技巧
</a>
</li>
<li class="chapter " data-level="1.8.4" data-path="../appendix/debug-kubernetes-services.html">
<a href="../appendix/debug-kubernetes-services.html">
2017-10-27 11:59:37 +08:00
7.4 kubernetes中的应用故障排查
</a>
2017-10-18 14:16:55 +08:00
</li>
<li class="chapter " data-level="1.8.5" data-path="../appendix/material-share.html">
2017-10-18 14:16:55 +08:00
<a href="../appendix/material-share.html">
2017-10-18 16:53:12 +08:00
7.5 Kubernetes相关资讯和情报链接
2017-10-18 14:16:55 +08:00
</a>
</li>
</ul>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
2017-09-19 22:01:07 +08:00
本书使用 GitBook 发布
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href=".." >5.1.2.1 Linkerd 使用指南</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div class="search-plus" id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="linkerd-&#x4F7F;&#x7528;&#x6307;&#x5357;">Linkerd &#x4F7F;&#x7528;&#x6307;&#x5357;</h1>
<h2 id="&#x524D;&#x8A00;">&#x524D;&#x8A00;</h2>
<p>Linkerd &#x4F5C;&#x4E3A;&#x4E00;&#x6B3E; service mesh &#x4E0E;kubernetes &#x7ED3;&#x5408;&#x540E;&#x4E3B;&#x8981;&#x6709;&#x4EE5;&#x4E0B;&#x51E0;&#x79CD;&#x7528;&#x6CD5;&#xFF1A;</p>
<ol>
<li>&#x4F5C;&#x4E3A;&#x670D;&#x52A1;&#x7F51;&#x5173;&#xFF0C;&#x53EF;&#x4EE5;&#x76D1;&#x63A7; kubernetes &#x4E2D;&#x7684;&#x670D;&#x52A1;&#x548C;&#x5B9E;&#x4F8B;</li>
<li>&#x4F7F;&#x7528; TLS &#x52A0;&#x5BC6;&#x670D;&#x52A1;</li>
<li>&#x901A;&#x8FC7;&#x6D41;&#x91CF;&#x8F6C;&#x79FB;&#x5230;&#x6301;&#x7EED;&#x4EA4;&#x4ED8;</li>
<li>&#x5F00;&#x53D1;&#x6D4B;&#x8BD5;&#x73AF;&#x5883;&#xFF08;Eat your own dog food&#xFF09;&#x3001;Ingress &#x548C;&#x8FB9;&#x7F18;&#x8DEF;&#x7531;</li>
<li>&#x7ED9;&#x5FAE;&#x670D;&#x52A1;&#x505A; staging</li>
<li>&#x5206;&#x5E03;&#x5F0F; tracing</li>
<li>&#x4F5C;&#x4E3A; Ingress controller</li>
<li>&#x4F7F;&#x7528; gRPC &#x66F4;&#x65B9;&#x4FBF;</li>
</ol>
<p>&#x4EE5;&#x4E0B;&#x6211;&#x4EEC;&#x7740;&#x91CD;&#x8BB2;&#x89E3;&#x5728; kubernetes &#x4E2D;&#x5982;&#x4F55;&#x4F7F;&#x7528; linkerd &#x4F5C;&#x4E3A; kubernetes &#x7684; Ingress controller&#xFF0C;&#x5E76;&#x4F5C;&#x4E3A;&#x8FB9;&#x7F18;&#x8282;&#x70B9;&#x4EE3;&#x66FF; <a href="https://traefik.io" target="_blank">Traefik</a> &#x7684;&#x529F;&#x80FD;&#xFF0C;&#x8BE6;&#x89C1; <a href="../practice/edge-node-configuration.html">&#x8FB9;&#x7F18;&#x8282;&#x70B9;&#x7684;&#x914D;&#x7F6E;</a>&#x3002;</p>
<h2 id="&#x51C6;&#x5907;">&#x51C6;&#x5907;</h2>
<p>&#x5B89;&#x88C5;&#x6D4B;&#x8BD5;&#x65F6;&#x9700;&#x8981;&#x7528;&#x5230;&#x7684;&#x955C;&#x50CF;&#x6709;&#xFF1A;</p>
<pre><code>buoyantio/helloworld:0.1.4
buoyantio/jenkins-plus:2.60.1
buoyantio/kubectl:v1.4.0
buoyantio/linkerd:1.1.2
buoyantio/namerd:1.1.2
buoyantio/nginx:1.10.2
linkerd/namerctl:0.8.6
openzipkin/zipkin:1.20
tutum/dnsutils:latest
</code></pre><p>&#x8FD9;&#x4E9B;&#x955C;&#x50CF;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x901A;&#x8FC7; Docker Hub &#x83B7;&#x53D6;&#xFF0C;&#x6211;&#x5C06;&#x5B83;&#x4EEC;&#x4E0B;&#x8F7D;&#x4E0B;&#x6765;&#x5E76;&#x4E0A;&#x4F20;&#x5230;&#x4E86;&#x81EA;&#x5DF1;&#x7684;&#x79C1;&#x6709;&#x955C;&#x50CF;&#x4ED3;&#x5E93; <code>sz-pg-oam-docker-hub-001.tendcloud.com</code> &#x4E2D;&#xFF0C;&#x4E0B;&#x6587;&#x4E2D;&#x7528;&#x5230;&#x7684;&#x955C;&#x50CF;&#x7686;&#x6765;&#x81EA;&#x6211;&#x7684;&#x79C1;&#x6709;&#x955C;&#x50CF;&#x4ED3;&#x5E93;&#xFF0C;yaml &#x914D;&#x7F6E;&#x89C1; <a href="../manifests/linkerd">linkerd</a> &#x76EE;&#x5F55;&#xFF0C;&#x5E76;&#x5728;&#x4F7F;&#x7528;&#x65F6;&#x5C06;&#x914D;&#x7F6E;&#x4E2D;&#x7684;&#x955C;&#x50CF;&#x5730;&#x5740;&#x4FEE;&#x6539;&#x4E3A;&#x4F60;&#x81EA;&#x5DF1;&#x7684;&#x3002;</p>
<h2 id="&#x90E8;&#x7F72;">&#x90E8;&#x7F72;</h2>
<p>&#x9996;&#x5148;&#x9700;&#x8981;&#x5148;&#x521B;&#x5EFA; RBAC&#xFF0C;&#x56E0;&#x4E3A;&#x4F7F;&#x7528; namerd &#x548C; ingress &#x65F6;&#x9700;&#x8981;&#x7528;&#x5230;&#x3002;</p>
<pre><code class="lang-bash">$ kubectl create <span class="hljs-_">-f</span> linkerd-rbac-beta.yml
</code></pre>
<p>Linkerd &#x63D0;&#x4F9B;&#x4E86; Jenkins &#x793A;&#x4F8B;&#xFF0C;&#x5728;&#x90E8;&#x7F72;&#x7684;&#x65F6;&#x5019;&#x4F7F;&#x7528;&#x4EE5;&#x4E0B;&#x547D;&#x4EE4;&#xFF1A;</p>
<pre><code class="lang-bash">$ kubectl create <span class="hljs-_">-f</span> jenkins-rbac-beta.yml
$ kubectl create <span class="hljs-_">-f</span> jenkins.yml
</code></pre>
<p>&#x8BBF;&#x95EE; <a href="http://jenkins.jimmysong.io" target="_blank">http://jenkins.jimmysong.io</a></p>
<figure id="fig1.6.2.2.1.1"><img src="../images/linkerd-jenkins-pipeline.jpg" alt="Jenkins pipeline"><figcaption>&#x56FE;&#x7247; - Jenkins pipeline</figcaption></figure>
<figure id="fig1.6.2.2.1.2"><img src="../images/linkerd-jenkins.jpg" alt="Jenkins config"><figcaption>&#x56FE;&#x7247; - Jenkins config</figcaption></figure>
<p><strong>&#x6CE8;&#x610F;</strong>&#xFF1A;&#x8981;&#x8BBF;&#x95EE; Jenkins &#x9700;&#x8981;&#x5728; Ingress &#x4E2D;&#x589E;&#x52A0;&#x914D;&#x7F6E;&#xFF0C;&#x4E0B;&#x6587;&#x4F1A;&#x63D0;&#x5230;&#x3002;</p>
<p>&#x5728; kubernetes &#x4E2D;&#x4F7F;&#x7528; Jenkins &#x7684;&#x65F6;&#x5019;&#x9700;&#x8981;&#x6CE8;&#x610F; Pipeline &#x4E2D;&#x7684;&#x914D;&#x7F6E;&#xFF1A;</p>
<pre><code> def currentVersion = getCurrentVersion()
def newVersion = getNextVersion(currentVersion)
def frontendIp = kubectl(&quot;get svc l5d -o jsonpath=\&quot;{.status.loadBalancer.ingress[0].*}\&quot;&quot;).trim()
def originalDst = getDst(getDtab())
</code></pre><p><code>frontendIP</code> &#x7684;&#x5730;&#x5740;&#x8981;&#x914D;&#x7F6E;&#x6210; service &#x7684; Cluster IP &#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x6CA1;&#x6709;&#x7528;&#x5230;LoadBalancer&#x3002;</p>
<p>&#x9700;&#x8981;&#x5B89;&#x88C5; namerd&#xFF0C;namerd &#x8D1F;&#x8D23; dtab &#x4FE1;&#x606F;&#x7684;&#x5B58;&#x50A8;&#xFF0C;&#x5F53;&#x7136;&#x4E5F;&#x53EF;&#x4EE5;&#x5B58;&#x50A8;&#x5728; etcd&#x3001;consul&#x4E2D;&#x3002;dtab &#x4FDD;&#x5B58;&#x7684;&#x662F;&#x8DEF;&#x7531;&#x89C4;&#x5219;&#x4FE1;&#x606F;&#xFF0C;&#x652F;&#x6301;&#x9012;&#x5F52;&#x89E3;&#x6790;&#xFF0C;&#x8BE6;&#x89C1; <a href="https://linkerd.io/in-depth/dtabs/" target="_blank">dtab</a>&#x3002;</p>
<p>&#x6D41;&#x91CF;&#x5207;&#x6362;&#x4E3B;&#x8981;&#x662F;&#x901A;&#x8FC7; <a href="https://linkerd.io/in-depth/dtabs/" target="_blank">dtab</a> &#x6765;&#x5B9E;&#x73B0;&#x7684;&#xFF0C;&#x901A;&#x8FC7;&#x5728; HTTP &#x8BF7;&#x6C42;&#x7684; header &#x4E2D;&#x589E;&#x52A0; <code>l5d-dtab</code> &#x548C; <code>Host</code> &#x4FE1;&#x606F;&#x53EF;&#x4EE5;&#x5BF9;&#x6D41;&#x91CF;&#x5206;&#x79BB;&#x5230; kubernetes &#x4E2D;&#x7684;&#x4E0D;&#x540C; service &#x4E0A;&#x3002;</p>
<p><strong>&#x9047;&#x5230;&#x7684;&#x95EE;&#x9898;</strong></p>
<p>Failed with the following error(s)
Error signal dtab is already marked as being deployed!</p>
<p>&#x56E0;&#x4E3A;&#x8BE5; dtab entry &#x5DF2;&#x7ECF;&#x5B58;&#x5728;&#xFF0C;&#x9700;&#x8981;&#x5220;&#x9664;&#x540E;&#x518D;&#x8FD0;&#x884C;&#x3002;</p>
<p>&#x8BBF;&#x95EE; <a href="http://namerd.jimmysong.io" target="_blank">http://namerd.jimmysong.io</a></p>
<figure id="fig1.6.2.2.1.3"><img src="../images/namerd-internal.jpg" alt="namerd"><figcaption>&#x56FE;&#x7247; - namerd</figcaption></figure>
<p>dtab &#x4FDD;&#x5B58;&#x5728; namerd &#x4E2D;&#xFF0C;&#x8BE5;&#x9875;&#x9762;&#x4E2D;&#x7684;&#x66F4;&#x6539;&#x4E0D;&#x4F1A;&#x751F;&#x6548;&#xFF0C;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x547D;&#x4EE4;&#x884C;&#x6765;&#x64CD;&#x4F5C;&#x3002;</p>
<p>&#x4F7F;&#x7528; <a href="https://github.com/linkerd/namerctl" target="_blank">namerctl</a> &#x6765;&#x64CD;&#x4F5C;&#x3002;</p>
<pre><code class="lang-bash">$ namerctl --base-url http://namerd-backend.jimmysong.io dtab update internal file
</code></pre>
<p><strong>&#x6CE8;&#x610F;</strong>&#xFF1A;update &#x65F6;&#x9700;&#x8981;&#x5C06;&#x66F4;&#x65B0;&#x6587;&#x672C;&#x5148;&#x5199;&#x5165;&#x6587;&#x4EF6;&#x4E2D;&#x3002;</p>
<h2 id="&#x90E8;&#x7F72;-linkerd">&#x90E8;&#x7F72; Linkerd</h2>
<p>&#x76F4;&#x63A5;&#x4F7F;&#x7528; yaml &#x6587;&#x4EF6;&#x90E8;&#x7F72;&#xFF0C;&#x6CE8;&#x610F;&#x4FEE;&#x6539;&#x955C;&#x50CF;&#x4ED3;&#x5E93;&#x5730;&#x5740;&#x3002;</p>
<pre><code class="lang-bash"><span class="hljs-comment"># &#x521B;&#x5EFA; namerd</span>
$ kubectl create <span class="hljs-_">-f</span> namerd.yaml
<span class="hljs-comment"># &#x521B;&#x5EFA; ingress</span>
$ kubectl create <span class="hljs-_">-f</span> linkerd-ingress.yml
<span class="hljs-comment"># &#x521B;&#x5EFA;&#x6D4B;&#x8BD5;&#x670D;&#x52A1; hello-world</span>
$ kubectl create <span class="hljs-_">-f</span> hello-world.yml
<span class="hljs-comment"># &#x521B;&#x5EFA; API &#x670D;&#x52A1;</span>
$ kubectl create <span class="hljs-_">-f</span> api.yml
<span class="hljs-comment"># &#x521B;&#x5EFA;&#x6D4B;&#x8BD5;&#x670D;&#x52A1; world-v2</span>
$ kubectl create <span class="hljs-_">-f</span> world-v2.yml
</code></pre>
<p>&#x4E3A;&#x4E86;&#x5728;&#x672C;&#x5730;&#x8C03;&#x8BD5; linkerd&#xFF0C;&#x6211;&#x4EEC;&#x5C06; linkerd &#x7684; service &#x52A0;&#x5165;&#x5230; ingress &#x4E2D;&#xFF0C;&#x8BE6;&#x89C1; <a href="practice/edge-node-configuration.md">&#x8FB9;&#x7F18;&#x8282;&#x70B9;&#x914D;&#x7F6E;</a>&#x3002;</p>
<p>&#x5728; Ingress &#x4E2D;&#x589E;&#x52A0;&#x5982;&#x4E0B;&#x5185;&#x5BB9;&#xFF1A;</p>
<pre><code class="lang-yaml"><span class="hljs-attr"> - host:</span> linkerd.jimmysong.io
<span class="hljs-attr"> http:</span>
<span class="hljs-attr"> paths:</span>
<span class="hljs-attr"> - path:</span> /
<span class="hljs-attr"> backend:</span>
<span class="hljs-attr"> serviceName:</span> l5d
<span class="hljs-attr"> servicePort:</span> <span class="hljs-number">9990</span>
<span class="hljs-attr"> - host:</span> linkerd-viz.jimmysong.io
<span class="hljs-attr"> http:</span>
<span class="hljs-attr"> paths:</span>
<span class="hljs-attr"> - path:</span> /
<span class="hljs-attr"> backend:</span>
<span class="hljs-attr"> serviceName:</span> linkerd-viz
<span class="hljs-attr"> servicePort:</span> <span class="hljs-number">80</span>
<span class="hljs-attr"> - host:</span> l5d.jimmysong.io
<span class="hljs-attr"> http:</span>
<span class="hljs-attr"> paths:</span>
<span class="hljs-attr"> - path:</span> /
<span class="hljs-attr"> backend:</span>
<span class="hljs-attr"> serviceName:</span> l5d
<span class="hljs-attr"> servicePort:</span> <span class="hljs-number">4141</span>
<span class="hljs-attr"> - host:</span> jenkins.jimmysong.io
<span class="hljs-attr"> http:</span>
<span class="hljs-attr"> paths:</span>
<span class="hljs-attr"> - path:</span> /
<span class="hljs-attr"> backend:</span>
<span class="hljs-attr"> serviceName:</span> jenkins
<span class="hljs-attr"> servicePort:</span> <span class="hljs-number">80</span>
</code></pre>
<p>&#x5728;&#x672C;&#x5730;<code>/etc/hosts</code>&#x4E2D;&#x6DFB;&#x52A0;&#x5982;&#x4E0B;&#x5185;&#x5BB9;&#xFF1A;</p>
<pre><code class="lang-i">172.20.0.119 linkerd.jimmysong.io
172.20.0.119 linkerd-viz.jimmysong.io
172.20.0.119 l5d.jimmysong.io
</code></pre>
<p><strong>&#x6D4B;&#x8BD5;&#x8DEF;&#x7531;&#x529F;&#x80FD;</strong></p>
<p>&#x4F7F;&#x7528; curl &#x7B80;&#x5355;&#x6D4B;&#x8BD5;&#x3002;</p>
<p>&#x5355;&#x6761;&#x6D4B;&#x8BD5;</p>
<pre><code class="lang-bash">$ curl <span class="hljs-_">-s</span> -H <span class="hljs-string">&quot;Host: www.hello.world&quot;</span> 172.20.0.120:4141
Hello (172.30.60.14) world (172.30.71.19)!!%
</code></pre>
<p>&#x8BF7;&#x6CE8;&#x610F;&#x8BF7;&#x6C42;&#x8FD4;&#x56DE;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x8868;&#x793A;&#x8BBF;&#x95EE;&#x7684;&#x662F; <code>world-v1</code> service&#x3002;</p>
<pre><code class="lang-bash">$ <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> $(seq 0 10000);<span class="hljs-keyword">do</span> <span class="hljs-built_in">echo</span> <span class="hljs-variable">$i</span>;curl <span class="hljs-_">-s</span> -H <span class="hljs-string">&quot;Host: www.hello.world&quot;</span> 172.20.0.120:4141;<span class="hljs-keyword">done</span>
</code></pre>
<p>&#x4F7F;&#x7528; ab test&#x3002;</p>
<pre><code class="lang-bash">$ ab -c 4 -n 10000 -H <span class="hljs-string">&quot;Host: www.hello.world&quot;</span> http://172.20.0.120:4141/
This is ApacheBench, Version 2.3 &lt;<span class="hljs-variable">$Revision</span>: 1757674 $&gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 172.20.0.120 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software:
Server Hostname: 172.20.0.120
Server Port: 4141
Document Path: /
Document Length: 43 bytes
Concurrency Level: 4
Time taken <span class="hljs-keyword">for</span> tests: 262.505 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2210000 bytes
HTML transferred: 430000 bytes
Requests per second: 38.09 [<span class="hljs-comment">#/sec] (mean)</span>
Time per request: 105.002 [ms] (mean)
Time per request: 26.250 [ms] (mean, across all concurrent requests)
Transfer rate: 8.22 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 36 51 91.1 39 2122
Processing: 39 54 29.3 46 585
Waiting: 39 52 20.3 46 362
Total: 76 105 96.3 88 2216
Percentage of the requests served within a certain time (ms)
50% 88
66% 93
75% 99
80% 103
90% 119
95% 146
98% 253
99% 397
100% 2216 (longest request)
</code></pre>
<h2 id="&#x76D1;&#x63A7;-kubernets-&#x4E2D;&#x7684;&#x670D;&#x52A1;&#x4E0E;&#x5B9E;&#x4F8B;">&#x76D1;&#x63A7; kubernets &#x4E2D;&#x7684;&#x670D;&#x52A1;&#x4E0E;&#x5B9E;&#x4F8B;</h2>
<p>&#x8BBF;&#x95EE; <a href="http://linkerd.jimmysong.io" target="_blank">http://linkerd.jimmysong.io</a> &#x67E5;&#x770B;&#x6D41;&#x91CF;&#x60C5;&#x51B5;</p>
<p>Outcoming </p>
<figure id="fig1.6.2.2.1.4"><img src="../images/linkerd-helloworld-outgoing.jpg" alt="linkerd&#x76D1;&#x63A7;"><figcaption>&#x56FE;&#x7247; - linkerd&#x76D1;&#x63A7;</figcaption></figure>
<p>Incoming</p>
<figure id="fig1.6.2.2.1.5"><img src="../images/linkerd-helloworld-incoming.jpg" alt="linkerd&#x76D1;&#x63A7;"><figcaption>&#x56FE;&#x7247; - linkerd&#x76D1;&#x63A7;</figcaption></figure>
<p>&#x8BBF;&#x95EE; <a href="http://linkerd-viz.jimmysong.io" target="_blank">http://linkerd-viz.jimmysong.io</a> &#x67E5;&#x770B;&#x5E94;&#x7528; metric &#x76D1;&#x63A7;</p>
<figure id="fig1.6.2.2.1.6"><img src="../images/linkerd-grafana.png" alt="linkerd&#x6027;&#x80FD;&#x76D1;&#x63A7;"><figcaption>&#x56FE;&#x7247; - linkerd&#x6027;&#x80FD;&#x76D1;&#x63A7;</figcaption></figure>
<h2 id="&#x6D4B;&#x8BD5;&#x8DEF;&#x7531;">&#x6D4B;&#x8BD5;&#x8DEF;&#x7531;</h2>
<p>&#x6D4B;&#x8BD5;&#x5728; http header &#x4E2D;&#x589E;&#x52A0; dtab &#x89C4;&#x5219;&#x3002;</p>
<pre><code class="lang-bash">$ curl -H <span class="hljs-string">&quot;Host: www.hello.world&quot;</span> -H <span class="hljs-string">&quot;l5d-dtab:/host/world =&gt; /srv/world-v2;&quot;</span> 172.20.0.120:4141
Hello (172.30.60.14) earth (172.30.94.40)!!
</code></pre>
<p>&#x8BF7;&#x6CE8;&#x610F;&#x8C03;&#x7528;&#x8FD4;&#x56DE;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x8868;&#x793A;&#x8C03;&#x7528;&#x7684;&#x662F; <code>world-v2</code> &#x7684; service&#x3002;</p>
<p>&#x53E6;&#x5916;&#x518D;&#x5BF9;&#x6BD4; ab test &#x7684;&#x7ED3;&#x679C;&#x4E0E; <code>linkerd-viz</code> &#x9875;&#x9762;&#x4E0A;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x7ED3;&#x679C;&#x4E00;&#x81F4;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x6211;&#x4EEC;&#x53EF;&#x80FD;&#x4E0D;&#x60F3;&#x628A;&#x8BE5;&#x529F;&#x80FD;&#x66B4;&#x9732;&#x7ED9;&#x6240;&#x6709;&#x4EBA;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x5728;&#x524D;&#x7AEF;&#x90E8;&#x7F72;&#x4E00;&#x4E2A; nginx &#x6765;&#x8FC7;&#x6EE4; header &#x4E2D;&#x7684; <code>l5d-dtab</code> &#x6253;&#x5934;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x5E76;&#x901A;&#x8FC7;&#x8BBE;&#x7F6E; cookie &#x7684;&#x65B9;&#x5F0F;&#x6765;&#x66FF;&#x4EE3; header &#x91CC;&#x7684; <code>l5d-dtab</code> &#x5B57;&#x6BB5;&#x3002;</p>
<pre><code class="lang-bash">$ http_proxy=http://172.20.0.120:4141 curl <span class="hljs-_">-s</span> http:/hello
Hello (172.30.60.14) world (172.30.71.19)!!
</code></pre>
<h2 id="&#x5C06;-linkerd-&#x4F5C;&#x4E3A;-ingress-controller">&#x5C06; Linkerd &#x4F5C;&#x4E3A; Ingress controller</h2>
<p>&#x5C06; Linkerd &#x4F5C;&#x4E3A; kubernetes ingress controller &#x7684;&#x65B9;&#x5F0F;&#x8DDF;&#x5C06; Treafik &#x4F5C;&#x4E3A; ingress controller &#x7684;&#x8FC7;&#x7A0B;&#x8FC7;&#x7A0B;&#x5B8C;&#x5168;&#x4E00;&#x6837;&#xFF0C;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x53C2;&#x8003; <a href="../practice/edge-node-configuration.html">&#x8FB9;&#x7F18;&#x8282;&#x70B9;&#x914D;&#x7F6E;</a>&#x3002;</p>
<p>&#x67B6;&#x6784;&#x5982;&#x4E0B;&#x56FE;&#x6240;&#x793A;&#x3002;</p>
<figure id="fig1.6.2.2.1.7"><img src="../images/linkerd-ingress-controller.jpg" alt="Linkerd ingress controller"><figcaption>&#x56FE;&#x7247; - Linkerd ingress controller</figcaption></figure>
<p><em>(&#x56FE;&#x7247;&#x6765;&#x81EA; A Service Mesh for Kubernetes - Buoyant.io)</em></p>
<p>&#x5F53;&#x7136;&#x53EF;&#x4EE5;&#x7ED5;&#x8FC7; kubernetes ingress controller &#x76F4;&#x63A5;&#x4F7F;&#x7528; linkerd &#x4F5C;&#x4E3A;&#x8FB9;&#x754C;&#x8DEF;&#x7531;&#xFF0C;&#x901A;&#x8FC7; dtab &#x548C; linkerd &#x524D;&#x9762;&#x7684; nginx &#x6765;&#x8DEF;&#x7531;&#x6D41;&#x91CF;&#x3002;</p>
<h2 id="&#x53C2;&#x8003;">&#x53C2;&#x8003;</h2>
<p><a href="https://github.com/linkerd/linkerd-examples/" target="_blank">https://github.com/linkerd/linkerd-examples/</a></p>
<p><a href="https://cdn2.hubspot.net/hubfs/2818724/A%20Service%20Mesh%20for%20Kubernetes_Final.pdf" target="_blank">A Service Mesh for Kubernetes</a></p>
2017-10-09 15:28:05 +08:00
<p><a href="https://linkerd.io/in-depth/dtabs/" target="_blank">dtab</a> </p>
<footer class="page-footer"><span class="copyright">Copyright &#xA9; jimmysong.io 2017 all right reserved&#xFF0C;powered by Gitbook</span><span class="footer-modification">Updated:
2017-08-21 18:23:35
</span></footer>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="linkerd.html" class="navigation navigation-prev " aria-label="Previous page: 5.1.2 Linkerd">
<i class="fa fa-angle-left"></i>
</a>
2017-09-20 21:55:19 +08:00
<a href="big-data.html" class="navigation navigation-next " aria-label="Next page: 5.2 大数据">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
2017-11-08 16:23:06 +08:00
gitbook.page.hasChanged({"page":{"title":"5.1.2.1 Linkerd 使用指南","level":"1.6.2.2.1","depth":4,"next":{"title":"5.2 大数据","level":"1.6.3","depth":2,"path":"usecases/big-data.md","ref":"usecases/big-data.md","articles":[{"title":"5.2.1 Spark standalone on Kubernetes","level":"1.6.3.1","depth":3,"path":"usecases/spark-standalone-on-kubernetes.md","ref":"usecases/spark-standalone-on-kubernetes.md","articles":[]},{"title":"5.2.2 运行支持kubernetes原生调度的Spark程序","level":"1.6.3.2","depth":3,"path":"usecases/running-spark-with-kubernetes-native-scheduler.md","ref":"usecases/running-spark-with-kubernetes-native-scheduler.md","articles":[]}]},"previous":{"title":"5.1.2 Linkerd","level":"1.6.2.2","depth":3,"path":"usecases/linkerd.md","ref":"usecases/linkerd.md","articles":[{"title":"5.1.2.1 Linkerd 使用指南","level":"1.6.2.2.1","depth":4,"path":"usecases/linkerd-user-guide.md","ref":"usecases/linkerd-user-guide.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["github","codesnippet","splitter","page-toc-button","image-captions","editlink","back-to-top-button","-lunr","-search","search-plus","github-buttons@2.1.0","favicon@^0.0.2","tbfed-pagefooter@^0.0.1","3-ba"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"Copyright © jimmysong.io 2017","modify_label":"Updated:","modify_format":"YYYY-MM-DD HH:mm:ss"},"github":{"url":"https://github.com/rootsongjc/kubernetes-handbook"},"editlink":{"label":"编辑本页","multilingual":false,"base":"https://github.com/rootsongjc/kubernetes-handbook/blob/master/"},"splitter":{},"codesnippet":{},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"favicon":{"shortcut":"favicon.ico","bookmark":"favicon.ico"},"page-toc-button":{},"back-to-top-button":{},"github-buttons":{"repo":"rootsongjc/kubernetes-handbook","types":["star"],"size":"small"},"3-ba":{"configuration":"auto","token":"11f7d254cfa4e0ca44b175c66d379ecc"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false},"search-plus":{},"image-captions":{"caption":"图片 - _CAPTION_","variable_name":"_pictures"}},"theme":"default","author":"Jimmy Song","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{"_pictures":[{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig1.2.1","level":"1.2","list_caption":"Figure: 云计算演进历程","alt":"云计算演进历程","nro":1,"url":"../images/cloud-computing-evolution-road.jpg","index":1,"caption_template":"图片 - _CAPTION_","label":"云计算演进历程","attributes":{},"skip":false,"key":"1.2.1"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig1.2.2","level":"1.2","list_caption":"Figure: Cloud native思维导图","alt":"Cloud native思维导图","nro":2,"url":"../images/cloud-native-architecutre-mindnode.jpg","index":2,"caption_template":"图片 - _CAPTION_","label":"Cloud native思维导图","attributes":{},"skip":false,"key":"1.2.2"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig1.2.3","level":"1.2","list_caption":"Figure: 十二因素应用","alt":"十二因素应用","nro":3,"url":"../images/12-factor-app.png","index":3,"caption_template":"图片 - _CAPTION_","label":"十二因素应用","attributes":{},"skip":false,"key":"1.2.3"},{"backlink":"cloud-native/kubernetes-and-cloud-native-app-overview.html#fig1.2.4","level":"1.2","list_c
});
</script>
</div>
<script src="../gitbook/gitbook.js"></script>
<script src="../gitbook/theme.js"></script>
<script src="../gitbook/gitbook-plugin-github/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-splitter/splitter.js"></script>
<script src="../gitbook/gitbook-plugin-page-toc-button/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-editlink/plugin.js"></script>
2017-09-19 21:38:03 +08:00
<script src="../gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-search-plus/jquery.mark.min.js"></script>
<script src="../gitbook/gitbook-plugin-search-plus/search.js"></script>
2017-10-09 15:28:05 +08:00
<script src="../gitbook/gitbook-plugin-github-buttons/plugin.js"></script>
2017-10-11 18:13:13 +08:00
<script src="../gitbook/gitbook-plugin-3-ba/plugin.js"></script>
<script src="../gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>