IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 十三,部署微服务到K8S -> 正文阅读

[系统运维]十三,部署微服务到K8S

上一篇文章我们构建了微服务的 Docker 镜像,接下来我们将镜像部署到K8S中。

完整代码:

https://github.com/Justin02180218/micro-kit

部署架构

图片

每个微服务启动2个 pod 注册到 consul 上,网关也启动2个 pod 从 consul 上获取微服务的一个 pod 实例来访问接口。

在 ingress 上配置了4个域名转发:

  • api.library.com: 访问 api 网关

  • consul.library.com: 访问 consul ui 页面

  • zipkin.library.com: 访问 ?zipkin 页面

  • hystrix.library.com: 访问 hystrix dashboard 页面

编写 K8S apply 文件

创建 deploy/k8s 目录,在此目录下编写 k8s apply 文件,如图:

图片

?

?

镜像仓库

在编写 k8s apply 文件前,先把我们构建好的 Docker 镜像上传到镜像仓库上。镜像仓库采用Harbor,Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

图片

安装 consul

$ helm repo add hashicorp https://helm.releases.hashicorp.com
$ helm install consul hashicorp/consul

编写 user deployment

创建 k8s-user-deployment.yaml 文件,代码如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: user-service
  labels:
    svc: user
    app: service
spec:
  replicas: 2
  selector:
    matchLabels:
      svc: user
      app: service
  template:
    metadata:
      labels:
        svc: user
        app: service
    spec:
      containers:
      - name: user-service
        image: harbor.justin.com/micro-kit/user-service:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 10086
        resources:
          requests:
            memory: 64Mi
            cpu: 250m
          limits:
            memory: 64Mi
            cpu: 250m

?

编写 book deployment

创建 k8s-book-deployment.yaml 文件,代码如下:

?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: book-service
  labels:
    svc: book
    app: service
spec:
  replicas: 2
  selector:
    matchLabels:
      svc: book
      app: service
  template:
    metadata:
      labels:
        svc: book
        app: service
    spec:
      containers:
      - name: book-service
        image: harbor.justin.com/micro-kit/book-service:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 10087
        resources:
          requests:
            memory: 64Mi
            cpu: 250m
          limits:
            memory: 64Mi
            cpu: 250m

编写 book rpc deployment

创建 k8s-book-rpc-deployment.yaml 文件,代码如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: book-rpc-service
  labels:
    svc: book-rpc
    app: service
spec:
  replicas: 2
  selector:
    matchLabels:
      svc: book-rpc
      app: service
  template:
    metadata:
      labels:
        svc: book-rpc
        app: service
    spec:
      containers:
      - name: book-rpc-service
        image: harbor.justin.com/micro-kit/book-rpc-service:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 10088
        resources:
          requests:
            memory: 64Mi
            cpu: 250m
          limits:
            memory: 64Mi
            cpu: 250m

编写 apigateway service

创建 k8s-apigateway-service.yaml 文件,代码如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: library-apigateway
  labels:
    svc: library
    app: apigateway
spec:
  replicas: 2
  selector:
    matchLabels:
      svc: library
      app: apigateway
  template:
    metadata:
      labels:
        svc: library
        app: apigateway
    spec:
      containers:
      - name: library-apigateway
        image: harbor.justin.com/micro-kit/apigateway:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: 64Mi
            cpu: 250m
          limits:
            memory: 64Mi
            cpu: 250m
---
apiVersion: v1
kind: Service
metadata:
  name: library-apigateway
spec:
  ports:
  - port: 80
  selector:
    svc: library
    app: apigateway

编写 zipkin service

创建 k8s-zipkin-service.yaml 文件,代码如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: zipkin-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zipkin-server
  template:
    metadata:
      labels:
        app: zipkin-server
    spec:
      containers:
        - name: zipkin-server
          image: openzipkin/zipkin
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 9411
---
apiVersion: v1
kind: Service
metadata:
  name: zipkin-server
spec:
  ports:
  - port: 9411
  selector:
    app: zipkin-server

编写 hystrix dashboard service

创建 k8s-hystrixdashboard-service.yaml 文件,代码如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hystrix-dashboard
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hystrix-dashboard
  template:
    metadata:
      labels:
        app: hystrix-dashboard
    spec:
      containers:
        - name: hystrix-dashboard
          image: mlabouardy/hystrix-dashboard
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 9002
---
apiVersion: v1
kind: Service
metadata:
  name: hystrix-dashboard
spec:
  ports:
  - port: 9002
  selector:
    app: hystrix-dashboard

编写 ingress

创建 k8s-ingress.yaml 文件,代码如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: apigateway-ingress
spec:
  rules:
  - host: api.library.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: library-apigateway
            port: 
              number: 80
  - host: consul.library.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: consul-ui
            port: 
              number: 80
  - host: zipkin.library.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: zipkin-server
            port: 
              number: 9411
  - host: hystrix.library.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: hystrix-dashboard
            port: 
              number: 9002

执行命令

进入项目目录下,执行以下命令部署到 K8S:

kubectl apply -f deploy/k8s/k8s-zipkin-service.yaml

kubectl apply -f deploy/k8s/k8s-hystrixdashboard-service.yaml

kubectl apply -f deploy/k8s/k8s-book-rpc-deployment.yaml

kubectl apply -f deploy/k8s/k8s-book-deployment.yaml

kubectl apply -f deploy/k8s/k8s-user-deployment.yaml

kubectl apply -f deploy/k8s/k8s-apigateway-service.yaml

kubectl apply -f deploy/k8s/k8s-ingress.yaml

查看 Pod

所有的 pod 都部署成功且正常运行:

图片

查看 Service

所有的 service 都部署成功且正常运行:

图片

?

查看 Ingress

图片

验证

注册到 consul 成功:

图片

接口调用成功:?

图片

查看 zipkin 调用链路:

图片

?

查看 Hystrix dashboard:

图片

完整代码:

https://github.com/Justin02180218/micro-kit


更多【分布式专辑】【架构实战专辑】系列文章,请关注公众号

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-18 17:46:14  更:2021-10-18 17:48:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:46:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码