前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >9. 死磕 k8s系列之安装istio及naftis

9. 死磕 k8s系列之安装istio及naftis

作者头像
彤哥
发布2020-01-17 15:15:52
1.5K0
发布2020-01-17 15:15:52
举报
文章被收录于专栏:彤哥读源码彤哥读源码

简介

本章我们将学习如何使用快速安装istio及控制台naftis,其中,naftis是小米开源的一款dashboard。

前提

  • 已部署k8s集群
  • 已安装helm

安装istio

添加istio到helm仓库中

代码语言:javascript
复制
helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.3.3/charts/

下载istio

打开网址 https://github.com/istio/istio/releases/tag/1.3.3,进入下载页面,我们这里下载的是istio-1.3.3-linux.tar.gz。

解压,并进入主目录。

代码语言:javascript
复制
[root@master ~]# ls
calico-3.9.2.yaml  helm-v2.15.2-linux-amd64.tar.gz  init_master.sh  install_kubelet.sh  istio-1.3.3-linux.tar.gz  kubeadm-config.yaml  linux-amd64  nginx-ingress.yaml
[root@master ~]# tar zxvf istio-1.3.3-linux.tar.gz
[root@master ~]# cd istio-1.3.3/
[root@master istio-1.3.3]# ls
bin  install  istio.VERSION  LICENSE  README.md  samples  tools

部署istio

创建命名空间。

代码语言:javascript
复制
kubectl create namespace istio-system

安装istio-init chart,以启动所有istio 自定义的资源。

代码语言:javascript
复制
helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system

通过执行下面的命令在Kubernetes中安装部署istio。

代码语言:javascript
复制
helm install install/kubernetes/helm/istio --name istio --namespace istio-system

查看各组件是否都正常。

代码语言:javascript
复制
watch kubectl get all -n istio-system

安装naftis

下载naftis

下载地址为:https://github.com/XiaoMi/naftis/releases,我这里下载的是0.1.4-rc6版本。

下载完成后解压:

代码语言:javascript
复制
tar zxvf manifest.tar.gz

部署naftis

创建命名空间。

代码语言:javascript
复制
kubectl create namespace naftis

部署mysql服务。

代码语言:javascript
复制
kubectl apply -n naftis -f mysql.yaml

此时会报错:

代码语言:javascript
复制
[root@master ~]# kubectl apply -n naftis -f mysql.yaml
persistentvolume/naftis-pv created
secret/naftis-mysql created
configmap/naftis-mysql-initialization created
configmap/naftis-mysql-test created
persistentvolumeclaim/naftis-mysql created
service/naftis-mysql created
pod/naftis-mysql-test created
error: unable to recognize "mysql.yaml": no matches for kind "Deployment" in version "extensions/v1beta1"

这是因为我们的k8s集群是v1.16.xx版本,Deployment的版本已经改成了apps/v1。

修改mysql.yaml,先把刚才安装的东西删除掉。

代码语言:javascript
复制
[root@master ~]# kubectl delete -n naftis -f mysql.yaml

注意,要修改apiVersion和spec.template.metadata.labels两个地方,另外,还要添加spec.selector标签。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: naftis-mysql
  labels:
    app: naftis-mysql
    chart: "mysql-0.8.2"
    release: "naftis"
    heritage: "Tiller"
spec:
  selector:
    matchLabels:
      app: naftis-mysql
      chart: "mysql-0.8.2"
      release: "naftis"
      heritage: "Tiller"
  template:
    metadata:
      labels:
        app: naftis-mysql
        chart: "mysql-0.8.2"
        release: "naftis"
        heritage: "Tiller"
# 省略...

重新安装mysql.yaml。

代码语言:javascript
复制
[root@master ~]# kubectl apply -n naftis -f mysql.yaml
persistentvolume/naftis-pv created
secret/naftis-mysql created
configmap/naftis-mysql-initialization created
configmap/naftis-mysql-test created
persistentvolumeclaim/naftis-mysql created
service/naftis-mysql created
pod/naftis-mysql-test created
deployment.apps/naftis-mysql created

在Kubernetes中部署 Naftis API 和 UI 服务。

代码语言:javascript
复制
kubectl apply -n naftis -f naftis.yaml

会遇到跟上面一样的问题,按同样的方式去修改就可以了。

查看各服务是否正常。

代码语言:javascript
复制
[root@master ~]# kubectl get all -n naftis
NAME                               READY   STATUS    RESTARTS   AGE
pod/naftis-api-5f9cdbf4b6-2ws7s    1/1     Running   0          65s
pod/naftis-mysql-fbd86d4cf-pn4kc   1/1     Running   0          5m23s
pod/naftis-mysql-test              0/1     Error     0          5m23s
pod/naftis-ui-866cdb6f9c-tctm8     1/1     Running   0          65s

NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/naftis-api     ClusterIP      10.96.197.105   <none>        50000/TCP      4m25s
service/naftis-mysql   ClusterIP      10.96.178.112   <none>        3306/TCP       5m23s
service/naftis-ui      LoadBalancer   10.96.172.162   <pending>     80:31682/TCP   4m25s

NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/naftis-api     1/1     1            1           65s
deployment.apps/naftis-mysql   1/1     1            1           5m23s
deployment.apps/naftis-ui      1/1     1            1           65s

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/naftis-api-5f9cdbf4b6    1         1         1       65s
replicaset.apps/naftis-mysql-fbd86d4cf   1         1         1       5m23s
replicaset.apps/naftis-ui-866cdb6f9c     1         1         1       65s

mysql-test Error先跳过。

页面访问

修改service/naftis-ui暴露端口的方式为NodePort。

代码语言:javascript
复制
kubectl edit service/naftis-ui -n naftis

将LoadBalancer修改为NodePort。

查看生成的端口:

代码语言:javascript
复制
[root@master ~]# kubectl get svc -n naftis
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
naftis-api     ClusterIP   10.96.197.105   <none>        50000/TCP      23m
naftis-mysql   ClusterIP   10.96.178.112   <none>        3306/TCP       23m
naftis-ui      NodePort    10.96.172.162   <none>        80:31682/TCP   23m

使用任意一个worker节点的ip加上生成的端口号31682即可访问naftis。

用户名/密码为:admin/admin。

通过naftis可以查看服务的状态等信息。

重新部署docker-test

默认情况,在Istio上部署安装应用使用自动Sidecar 注入。

使用以下命令将托管应用程序的名称空间(此处为docker-test)的标记为istio-injection=enabled:

代码语言:javascript
复制
kubectl label namespace docker-test istio-injection=enabled

通过kuboard删除一个容器组(pod),查看自动新建的pod。

可以看到istio的proxy注入成功了。

总结

本章我们一起学习了使用istio及其控制台naftis的安装,只要修改了命名空间的label属性,后面部署的服务就会自动注入istio的proxy了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 彤哥读源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 前提
  • 安装istio
    • 添加istio到helm仓库中
      • 下载istio
        • 部署istio
        • 安装naftis
          • 下载naftis
            • 部署naftis
              • 页面访问
              • 重新部署docker-test
              • 总结
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档