1
1
# 快速部署一个云原生本地实验环境
2
2
3
- 本文旨在帮助您快速部署一个云原生本地实验环境,让您可以基本不需要任何Kubernetes和云原生技术的基础就可以对云原生环境一探究竟 。
3
+ 本文旨在帮助您快速部署一个云原生本地实验环境,让您可以基本不需要任何 Kubernetes 和云原生技术的基础就可以对云原生环境一探究竟 。
4
4
5
- 本文中使用[ kubernetes-vagrant-centos-cluster] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster ) 在本地使用 Vagrant 启动三个虚拟机部署分布式的Kubernetes集群 。
5
+ 本文中使用 [ kubernetes-vagrant-centos-cluster] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster ) 在本地使用 Vagrant 启动三个虚拟机部署分布式的 Kubernetes 集群 。
6
6
7
- 如仅需要体验云原生环境和测试服务功能,可以使用更加轻量级的[ cloud-native-sandbox] ( https://github.com/rootsongjc/cloud-native-sandbox ) ,通过个人电脑的Docker部署单节点的Kubernetes、Istio等云原生环境 。
7
+ 如仅需要体验云原生环境和测试服务功能,可以使用更加轻量级的 [ cloud-native-sandbox] ( https://github.com/rootsongjc/cloud-native-sandbox ) ,通过个人电脑的 Docker 部署单节点的 Kubernetes、Istio 等云原生环境 。
8
8
9
9
## 准备环境
10
10
11
11
需要准备以下软件和环境:
12
12
13
- - 8G以上内存
13
+ - 8G 以上内存
14
14
- [ Vagrant 2.0+] ( https://www.vagrantup.com/ )
15
15
- [ VirtualBox 5.0 +] ( https://www.virtualbox.org/wiki/Downloads )
16
- - 提前下载kubernetes1 .9.1以上版本的release压缩包 ,[ 至百度网盘下载] ( https://pan.baidu.com/s/1zkg2xEAedvZHObmTHDFChg ) (并将名字中的版本号删除)
17
- - Mac/Linux,** 不支持Windows **
18
- - 支持Kubernetes1.9以上版本(支持当前Kubernetes最新版本1 .11.1)
16
+ - 提前下载 Kubernetes1 .9.1 以上版本的 release 压缩包 ,[ 至百度网盘下载] ( https://pan.baidu.com/s/1zkg2xEAedvZHObmTHDFChg ) (并将名字中的版本号删除)
17
+ - Mac/Linux,** 不支持 Windows **
18
+ - 支持 Kubernetes1.9 以上版本(支持当前 Kubernetes 最新版本 1 .11.1)
19
19
20
20
## 集群
21
21
22
- 我们使用Vagrant和Virtualbox安装包含3个节点的kubernetes集群,其中master节点同时作为node节点 。
22
+ 我们使用 Vagrant 和 VirtualBox 安装包含 3 个节点的 Kubernetes 集群,其中 master 节点同时作为 node 节点 。
23
23
24
24
| IP | 主机名 | 组件 |
25
25
| ------------ | ------ | ------------------------------------------------------------ |
@@ -52,45 +52,45 @@ Kubernetes service IP范围:10.254.0.0/16
52
52
53
53
## 使用说明
54
54
55
- 确保安装好以上的准备环境后,执行下列命令启动kubernetes集群 :
55
+ 确保安装好以上的准备环境后,执行下列命令启动 kubernetes 集群 :
56
56
57
57
``` bash
58
58
git clone https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster.git
59
59
cd kubernetes-vagrant-centos-cluster
60
60
vagrant up
61
61
```
62
62
63
- ** 注意** :克隆完Git仓库后,需要提前下载kubernetes的压缩包到 ` kubenetes-vagrant-centos-cluster ` 目录下,** 并将压缩包名字中的版本号删除** ,包括如下两个文件:
63
+ ** 注意** :克隆完 Git 仓库后,需要提前下载 kubernetes 的压缩包到 ` kubenetes-vagrant-centos-cluster ` 目录下,** 并将压缩包名字中的版本号删除** ,包括如下两个文件:
64
64
65
65
- kubernetes-client-linux-amd64.tar.gz
66
66
- kubernetes-server-linux-amd64.tar.gz
67
67
68
- 如果是首次部署,会自动下载` centos/7 ` 的box ,这需要花费一些时间,另外每个节点还需要下载安装一系列软件包,整个过程大概需要10几分钟 。
68
+ 如果是首次部署,会自动下载 ` centos/7 ` 的 box ,这需要花费一些时间,另外每个节点还需要下载安装一系列软件包,整个过程大概需要 10 几分钟 。
69
69
70
- 如果您在运行` vagrant up ` 的过程中发现无法下载` centos/7 ` 的box,可以手动下载后将其添加到vagrant中 。
70
+ 如果您在运行 ` vagrant up ` 的过程中发现无法下载 ` centos/7 ` 的 box,可以手动下载后将其添加到 vagrant 中 。
71
71
72
- ** 手动添加centos /7 box**
72
+ ** 手动添加 centos /7 box**
73
73
74
74
``` bash
75
75
wget -c http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1801_02.VirtualBox.box
76
76
vagrant box add CentOS-7-x86_64-Vagrant-1801_02.VirtualBox.box --name centos/7
77
77
```
78
78
79
- 这样下次运行` vagrant up ` 的时候就会自动读取本地的` centos/7 ` box而不会再到网上下载 。
79
+ 这样下次运行 ` vagrant up ` 的时候就会自动读取本地的 ` centos/7 ` box 而不会再到网上下载 。
80
80
81
- ### 访问kubernetes集群
81
+ ### 访问 kubernetes 集群
82
82
83
- 访问Kubernetes集群的方式有三种 :
83
+ 访问 Kubernetes 集群的方式有三种 :
84
84
85
85
- 本地访问
86
- - 在VM内部访问
86
+ - 在 VM 内部访问
87
87
- kubernetes dashboard
88
88
89
89
** 通过本地访问**
90
90
91
- 可以直接在你自己的本地环境中操作该kubernetes集群 ,而无需登录到虚拟机中,执行以下步骤:
91
+ 可以直接在你自己的本地环境中操作该 kubernetes 集群 ,而无需登录到虚拟机中,执行以下步骤:
92
92
93
- 将` conf/admin.kubeconfig ` 文件放到` ~/.kube/config ` 目录下即可在本地使用` kubectl ` 命令操作集群。
93
+ 将 ` conf/admin.kubeconfig ` 文件放到 ` ~/.kube/config ` 目录下即可在本地使用 ` kubectl ` 命令操作集群。
94
94
95
95
``` bash
96
96
mkdir -p ~ /.kube
@@ -111,77 +111,77 @@ kubectl get nodes
111
111
112
112
** Kubernetes dashboard**
113
113
114
- 还可以直接通过dashboard UI来访问: https://172.17.8.101:8443
114
+ 还可以直接通过 dashboard UI 来访问: [ https://172.17.8.101:8443 ] ( https://172.17.8.101:8443/ )
115
115
116
- 可以在本地执行以下命令获取token的值(需要提前安装kubectl ):
116
+ 可以在本地执行以下命令获取 token 的值(需要提前安装 kubectl ):
117
117
118
118
``` bash
119
119
kubectl -n kube-system describe secret ` kubectl -n kube-system get secret| grep admin-token| cut -d " " -f1` | grep " token:" | tr -s " " | cut -d " " -f2
120
120
```
121
121
122
- ** 注意** :token的值也可以在 ` vagrant up ` 的日志的最后看到。
122
+ ** 注意** :token 的值也可以在 ` vagrant up ` 的日志的最后看到。
123
123
124
124
![ Kubernetes dashboard] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/raw/master/images/dashboard-animation.gif )
125
125
126
- ** Heapster监控 **
126
+ ** Heapster 监控 **
127
127
128
- 创建Heapster监控 :
128
+ 创建 Heapster 监控 :
129
129
130
130
``` bash
131
131
kubectl apply -f addon/heapster/
132
132
```
133
133
134
- 访问Grafana
134
+ 访问 Grafana
135
135
136
- 使用Ingress方式暴露的服务 ,在本地` /etc/hosts ` 中增加一条配置:
136
+ 使用 Ingress 方式暴露的服务 ,在本地 ` /etc/hosts ` 中增加一条配置:
137
137
138
138
``` ini
139
139
172.17.8.102 grafana.jimmysong.io
140
140
```
141
141
142
- 访问Grafana :` http://grafana.jimmysong.io `
142
+ 访问 Grafana :` http://grafana.jimmysong.io `
143
143
144
144
![ Grafana] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/raw/master/images/grafana-animation.gif )
145
145
146
146
** Traefik**
147
147
148
- 部署Traefik ingress controller和增加ingress配置 :
148
+ 部署 Traefik ingress controller 和增加 ingress 配置 :
149
149
150
150
``` bash
151
151
kubectl apply -f addon/traefik-ingress
152
152
```
153
153
154
- 在本地` /etc/hosts ` 中增加一条配置:
154
+ 在本地 ` /etc/hosts ` 中增加一条配置:
155
155
156
156
``` ini
157
157
172.17.8.102 traefik.jimmysong.io
158
158
```
159
159
160
- 访问Traefik UI:< http://traefik.jimmysong.io >
160
+ 访问 Traefik UI:[ http://traefik.jimmysong.io ] ( http://traefik.jimmysong.io/ )
161
161
162
162
![ Traefik dashboard] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/raw/master/images/traefik-ingress.gif )
163
163
164
164
** EFK**
165
165
166
- 使用EFK做日志收集 。
166
+ 使用 EFK 做日志收集 。
167
167
168
168
``` bash
169
169
kubectl apply -f addon/efk/
170
170
```
171
171
172
- ** 注意** :运行EFK的每个节点需要消耗很大的CPU和内存,请保证每台虚拟机至少分配了4G内存 。
172
+ ** 注意** :运行 EFK 的每个节点需要消耗很大的 CPU 和内存,请保证每台虚拟机至少分配了 4G 内存 。
173
173
174
174
** Helm**
175
175
176
- 用来部署helm 。
176
+ 用来部署 helm 。
177
177
178
178
``` bash
179
179
hack/deploy-helm.sh
180
180
```
181
181
182
182
### Service Mesh
183
183
184
- 我们使用 [ istio ] ( https://istio.io ) 作为 service mesh。
184
+ 我们使用 [ Istio ] ( https://istio.io/ ) 作为 service mesh。
185
185
186
186
** 安装**
187
187
@@ -196,14 +196,14 @@ kubectl apply -n default -f <(istioctl kube-inject -f yaml/istio-bookinfo/bookin
196
196
istioctl create -f yaml/istio-bookinfo/bookinfo-gateway.yaml
197
197
```
198
198
199
- 在您自己的本地主机的` /etc/hosts ` 文件中增加如下配置项。
199
+ 在您自己的本地主机的 ` /etc/hosts ` 文件中增加如下配置项。
200
200
201
201
```
202
202
172.17.8.102 grafana.istio.jimmysong.io
203
203
172.17.8.102 servicegraph.istio.jimmysong.io
204
204
```
205
205
206
- 我们可以通过下面的URL地址访问以上的服务 。
206
+ 我们可以通过下面的 URL 地址访问以上的服务 。
207
207
208
208
| Service | URL |
209
209
| ------------ | ------------------------------------------------------------ |
@@ -212,60 +212,41 @@ istioctl create -f yaml/istio-bookinfo/bookinfo-gateway.yaml
212
212
| tracing | ` http://172.17.8.101:$JAEGER_PORT ` |
213
213
| productpage | ` http://172.17.8.101:$GATEWAY_PORT/productpage ` |
214
214
215
- ** 注意** :` JAEGER_PORT ` 可以通过` kubectl -n istio-system get svc tracing -o jsonpath='{.spec.ports[0].nodePort}' ` 获取,` GATEWAY_PORT ` 可以通过` kubectl -n istio-system get svc istio-ingressgateway -o jsonpath='{.spec.ports[0].nodePort}' ` 获取。
215
+ ** 注意** :` JAEGER_PORT ` 可以通过 ` kubectl -n istio-system get svc tracing -o jsonpath='{.spec.ports[0].nodePort}' ` 获取,` GATEWAY_PORT ` 可以通过 ` kubectl -n istio-system get svc istio-ingressgateway -o jsonpath='{.spec.ports[0].nodePort}' ` 获取。
216
216
217
217
![ bookinfo示例] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/raw/master/images/bookinfo-demo.gif )
218
218
219
- ### Vistio
220
-
221
- [ Vizceral] ( https://github.com/Netflix/vizceral ) 是Netflix发布的一个开源项目,用于近乎实时地监控应用程序和集群之间的网络流量。Vistio是使用Vizceral对Istio和网格监控的改进。它利用Istio Mixer生成的指标,然后将其输入Prometheus。Vistio查询Prometheus并将数据存储在本地以允许重播流量。
222
-
223
- ``` bash
224
- # Deploy vistio via kubectl
225
- kubectl apply -f addon/vistio/
226
-
227
- # Expose vistio-api
228
- kubectl -n default port-forward $( kubectl -n default get pod -l app=vistio-api -o jsonpath=' {.items[0].metadata.name}' ) 9091:9091 &
229
-
230
- # Expose vistio in another terminal window
231
- kubectl -n default port-forward $( kubectl -n default get pod -l app=vistio-web -o jsonpath=' {.items[0].metadata.name}' ) 8080:8080 &
232
- ```
233
-
234
- 如果一切都已经启动并准备就绪,您就可以访问Vistio UI,开始探索服务网格网络,访问[ http://localhost:8080 ] ( http://localhost:8080/ ) 您将会看到类似下图的输出。
235
-
236
- ![ vistio视图动画] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/raw/master/images/vistio-animation.gif )
237
-
238
- 更多详细内容请参考[ Vistio—使用Netflix的Vizceral可视化Istio service mesh] ( https://servicemesher.github.io/blog/vistio-visualize-your-istio-mesh-using-netflixs-vizceral/ ) 。
239
-
240
219
### Kiali
241
220
242
- Kiali是一个用于提供Istio service mesh观察性的项目 ,更多信息请查看 [ https://kiali.io ] ( https://kiali.io/ ) 。
221
+ Kiali 是一个用于提供 Istio service mesh 观察性的项目 ,更多信息请查看 [ https://kiali.io ] ( https://kiali.io/ ) 。
243
222
244
223
在本地该项目的根路径下执行下面的命令:
245
224
246
225
``` bash
247
226
kubectl apply -n istio-system -f addon/kiali
248
227
```
249
228
250
- Kiali web地址 :` http://172.17.8.101:31439 `
229
+ Kiali web 地址 :` http://172.17.8.101:31439 `
251
230
252
- 用户名/ 密码:admin/admin
231
+ 用户名 / 密码:admin/admin
253
232
254
233
![ Kiali页面] ( https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/raw/master/images/kiali.gif )
255
234
256
235
** 注意** :Kilia使用Jaeger做追踪,请不用屏蔽kilia页面的弹出窗口。
257
236
237
+ ** 注意** :Kilia 使用 Jaeger 做追踪,请不用屏蔽 kilia 页面的弹出窗口。
238
+
258
239
### Weave scope
259
240
260
- [ Weave scope] ( https://github.com/weaveworks/scope ) 可用于监控、可视化和管理Docker&Kubernetes集群 ,详情见 https://www.weave.works/oss/scope/
241
+ [ Weave scope] ( https://github.com/weaveworks/scope ) 可用于监控、可视化和管理 Docker&Kubernetes 集群 ,详情见 [ Weave 官方文档 ] ( https://www.weave.works/oss/scope/ ) 。
261
242
262
243
在本地该项目的根路径下执行下面的命令:
263
244
264
245
``` bash
265
246
kubectl apply -f addon/weave-scope
266
247
```
267
248
268
- 在本地的` /etc/hosts ` 下增加一条记录。
249
+ 在本地的 ` /etc/hosts ` 下增加一条记录。
269
250
270
251
```
271
252
172.17.8.102 scope.weave.jimmysong.io
@@ -277,7 +258,7 @@ kubectl apply -f addon/weave-scope
277
258
278
259
## 管理
279
260
280
- 除了特别说明,以下命令都在当前的repo目录下操作 。
261
+ 除了特别说明,以下命令都在当前的 repo 目录下操作 。
281
262
282
263
### 挂起
283
264
@@ -324,7 +305,7 @@ cd /vagrant/hack
324
305
exit
325
306
```
326
307
327
- 现在你已经拥有一个完整的基础的kubernetes运行环境,在该repo的根目录下执行下面的命令可以获取kubernetes dahsboard的admin用户的token 。
308
+ 现在你已经拥有一个完整的基础的 kubernetes 运行环境,在该 repo 的根目录下执行下面的命令可以获取 kubernetes dahsboard 的 admin 用户的 token 。
328
309
329
310
``` bash
330
311
hack/get-dashboard-token.sh
@@ -348,6 +329,5 @@ rm -rf .vagrant
348
329
## 参考
349
330
350
331
- [ Kubernetes handbook - jimmysong.io] ( https://jimmysong.io/kubernetes-handbook )
351
- - [ duffqiu/centos-vagrant] ( https://github.com/duffqiu/centos-vagrant )
352
- - [ coredns/deployment] ( https://github.com/coredns/deployment )
353
- - [ Vistio—使用Netflix的Vizceral可视化Istio service mesh] ( http://www.servicemesher.com/blog/vistio-visualize-your-istio-mesh-using-netflixs-vizceral/ )
332
+ - [ duffqiu/centos-vagrant - github.com] ( https://github.com/duffqiu/centos-vagrant )
333
+ - [ coredns/deployment - github.com] ( https://github.com/coredns/deployment )
0 commit comments