- 序言
- 云原生
- Kubernetes 架构
- Kubernetes 中的网络
- Pod 状态与生命周期管理
- 集群资源管理
- 控制器
- 服务发现
- 身份与权限控制
- 存储
- 集群扩展
- 资源调度
- 用户指南
- 资源对象配置
- 命令使用
- 集群安全性管理
- 访问 Kubernetes 集群
- 在 Kubernetes 中开发部署应用
- 最佳实践概览
- 在 CentOS 上部署 Kubernetes 集群
- 生产级的 Kubernetes 简化管理工具kubeadm
- 服务发现与负载均衡
- 运维管理
- 存储管理
- 集群与应用监控
- 分布式跟踪
- 服务编排管理
- 持续集成与发布
- 更新与升级
- 领域应用概览
- 微服务架构
- Service Mesh 服务网格
- 大数据
- Serverless架构
- 边缘计算
- 人工智能
- 开发指南
- CNCF
- 附录说明
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
安装Conduit
本文档指导您如何在kubernetes上安装Conduit service mesh。
前提条件
- kubernetes版本为1.8或以上
用到的镜像如下:
- buoyantio/kubectl:v1.6.2
- gcr.io/runconduit/controller:v0.1.0
- gcr.io/runconduit/web:v0.1.0
- prom/prometheus:v1.8.1
其中位于gcr.io的镜像我备份到了DockerHub:
- jimmysong/runconduit-web:v0.1.0
- jimmysong/runconduit-controller:v0.1.0
另外两个镜像本身就可以从DockerHub上下载。
部署
到release页面上下载conduit的二进制文件。
使用conduit install
命令生成了用于部署到kubernetes中yaml文件,然后修改文件中的镜像仓库地址为你自己的镜像地址。
conduit install>conduit-0.1.0.yaml
# 修改完镜像地址执行
kubectl apply -f conduit-0.1.0.yaml
注意:Conduit官方给出的yaml文件中不包括RBAC授权,我重新修改了,增加了RBAC和ServiceAccount。
使用kubectl proxy
来开放外网访问conduit dashboard:
kubectl proxy --address='172.20.0.113' --port=8001 --accept-hosts='^*$'
在浏览器中访问http://172.20.0.113:8001/api/v1/namespaces/conduit/services/web:http/proxy/servicemesh将看到如下页面:
Conduit inject
Conduit注入的时候需要用到如下两个镜像:
- gcr.io/runconduit/proxy:v0.1.0
- gcr.io/runconduit/proxy-init:v0.1.0
我将其备份到了DockerHub:
- jimmysong/runconduit-proxy:v0.1.0
- jimmysong/runconduit-proxy-init:v0.1.0
查看conduit向yaml文件中注入了哪些配置,我们使用my-nginx.yaml为例:
conduit inject --init-image harbor-001.jimmysong.io/library/runconduit-proxy-init --proxy-image harbor-001.jimmysong.io/library/runconduit-proxy my-nginx.yaml|kubectl apply -f -
注意:只需要指定镜像名称即可,tag与使用的conduit server版本相同,会自动注入。
my-nginx.yaml的内容如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: harbor-001.jimmysong.io/library/nginx:1.9
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
app: my-nginx
spec:
ports:
- port: 80
protocol: TCP
name: http
selector:
run: my-nginx
Conduit自动注入后生成的新的yaml文件内容如下:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: my-nginx
spec:
replicas: 2
strategy: {}
template:
metadata:
annotations:
conduit.io/created-by: conduit/cli v0.1.0
conduit.io/proxy-version: v0.1.0
creationTimestamp: null
labels:
conduit.io/controller: conduit
conduit.io/plane: data
run: my-nginx
spec:
containers:
- image: harbor-001.jimmysong.io/library/nginx:1.9
name: my-nginx
ports:
- containerPort: 80
resources: {}
- env:
- name: CONDUIT_PROXY_LOG
value: trace,h2=debug,mio=info,tokio_core=info
- name: CONDUIT_PROXY_CONTROL_URL
value: tcp://proxy-api.conduit.svc.cluster.local:8086
- name: CONDUIT_PROXY_CONTROL_LISTENER
value: tcp://0.0.0.0:4190
- name: CONDUIT_PROXY_PRIVATE_LISTENER
value: tcp://127.0.0.1:4140
- name: CONDUIT_PROXY_PUBLIC_LISTENER
value: tcp://0.0.0.0:4143
- name: CONDUIT_PROXY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: CONDUIT_PROXY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: CONDUIT_PROXY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: harbor-001.jimmysong.io/library/runconduit-proxy:v0.1.0
imagePullPolicy: IfNotPresent
name: conduit-proxy
ports:
- containerPort: 4143
name: conduit-proxy
resources: {}
securityContext:
runAsUser: 2102
initContainers:
- args:
- -p
- "4143"
- -o
- "4140"
- -i
- "4190"
- -u
- "2102"
image: harbor-001.jimmysong.io/library/runconduit-proxy-init:v0.1.0
imagePullPolicy: IfNotPresent
name: conduit-init
resources: {}
securityContext:
capabilities:
add:
- NET_ADMIN
privileged: false
status: {}
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
app: my-nginx
spec:
ports:
- port: 80
protocol: TCP
name: http
selector:
run: my-nginx
---
部署示例应用
使用下面的命令部署官方提供的示例应用:
curl https://raw.githubusercontent.com/rootsongjc/kubernetes-handbook/master/manifests/conduit/emojivoto.yml | conduit inject --init-image harbor-001.jimmysong.io/library/runconduit-proxy-init --proxy-image harbor-001.jimmysong.io/library/runconduit-proxy - --skip-inbound-ports=80 | kubectl apply -f -
注意:其中使用的镜像地址已经改为我的私有镜像仓库地址,大家使用时请注意修改。
参考
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论