基于Kubernetes编排部署GPMall

1实战案例——容器化部署基础服务

 

1.1.1 案例目标

(1)了解Redis服务的容器化部署。

(2)了解ZooKeeper服务的容器化部署。

(3)了解Kafka服务的容器化部署。

1.1.2 案例分析

1.规划节点

节点规划,见表1-1-1。

表1-1-1节点规划

IP

主机名

节点

10.24.2.156

master

Kubernetes master节点

10.24.2.157

node

Kubernetes worker节点

2.基础准备

Kubernetes集群已部署完成,将提供的压缩包GPMall.tar.gz上传到master节点/root目录下并解压。

1.1.3 案例实施

1.Redis容器化部署

(1)编写Dockerfile

编写yum文件

[root@master ~]# cd gpmall/

[root@master gpmall]# cat local.repo

[gpmall]

name=gpmall

baseurl=file:///opt/gpmall

gpgcheck=0

enabled=1

编写Dockerfile文件:

[root@master gpmall]# cat Dockerfile-redis

FROM centos:centos7.5.1804

MAINTAINER Guo

# 配置yum

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

#安装Redis

RUN yum -y install redis

# 开放端口

EXPOSE 6379

#安装清理缓存文件

RUN yum clean all

#修改绑定IP地址

RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf

#关闭保护模式

RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis.conf

#启动

ENTRYPOINT [ "/usr/bin/redis-server","/etc/redis.conf"]

CMD []

(2)构建镜像

构建镜像gpmall-redis:v1.0:

[root@master gpmall]# docker build -t gpmall-redis:v1.0 -f Dockerfile-redis .

Sending build context to Docker daemon  507.6MB

Step 1/12 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/12 : MAINTAINER Guo

 ---> Using cache

 ---> 02855371e6e9

Step 3/12 : ADD gpmall.tar /opt

 ---> Using cache

 ---> bb41486d722b

Step 4/12 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> 310d88dd58d7

Step 5/12 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> ebd2db8d8bf6

Step 6/12 : RUN yum -y install redis

 ---> Using cache

 ---> bbb61e6529ad

Step 7/12 : EXPOSE 6379

 ---> Using cache

 ---> d4e578610926

Step 8/12 : RUN yum clean all

 ---> Using cache

 ---> 7d204f260c6a

Step 9/12 : RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf

 ---> Using cache

 ---> 6f495fddae91

Step 10/12 : RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis.conf

 ---> Using cache

 ---> bdc34d6845dd

Step 11/12 : ENTRYPOINT [ "/usr/bin/redis-server","/etc/redis.conf"]

 ---> Using cache

 ---> 8cccc88ad3ba

Step 12/12 : CMD []

 ---> Using cache

 ---> 0e71dea163a7

Successfully built 0e71dea163a7

Successfully tagged gpmall-redis:v1.0

查看镜像列表:

[root@master gpmall]# docker images

REPOSITORY     TAG        IMAGE ID          CREATED         SIZE

gpmall-redis       v1.0        0e71dea163a7        2 minutes ago       465MB

2.Mariadb容器化部署

(1)编写Dockerfile

编写数据库初始化脚本run.sh:

[root@master gpmall]# cat mysql_init.sh

#!/bin/bash

mysql_install_db --user=mysql

(mysqld_safe &) | grep a

sleep 3s

mysqladmin -u root password '123456'

sleep 3s

mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'"

sleep 3s

mysql -uroot -p123456 -e "create database gpmall;use gpmall;source /opt/gpmall.sql;"

sleep 3s

编写Dockerfile文件:

[root@master gpmall]# cat Dockerfile-mariadb

FROM centos:centos7.5.1804

MAINTAINER Chinaskill

# 配置yum

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

# 安装MariaDB

RUN yum install -y MariaDB-server expect net-tools

RUN yum clean all

COPY gpmall.sql /opt/

ADD mysql_init.sh /opt/

RUN chmod +x /opt/mysql_init.sh

RUN /opt/mysql_init.sh

ENV LC_ALL en_US.UTF-8

EXPOSE 3306

CMD ["mysqld_safe"]

(2)构建镜像

构建镜像:

[root@master gpmall]# docker build -t gpmall-mariadb:v1.0 -f Dockerfile-mariadb .

Sending build context to Docker daemon  507.6MB

Step 1/14 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/14 : MAINTAINER Chinaskill

 ---> Using cache

 ---> 612224da592d

Step 3/14 : ADD gpmall.tar /opt

 ---> Using cache

 ---> 6d1ddf658c25

Step 4/14 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> 6a228b86827e

Step 5/14 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> 68cd0048ecc7

Step 6/14 : RUN yum install -y MariaDB-server expect net-tools

 ---> Using cache

 ---> dbf601e719e3

Step 7/14 : RUN yum clean all

 ---> Using cache

 ---> 0508690b35f5

Step 8/14 : COPY gpmall.sql /opt/

 ---> Using cache

 ---> 617904a55aa2

Step 9/14 : ADD mysql_init.sh /opt/

 ---> Using cache

 ---> 80e1373d25f2

Step 10/14 : RUN chmod +x /opt/mysql_init.sh

 ---> Using cache

 ---> 3d970f66be13

Step 11/14 : RUN /opt/mysql_init.sh

 ---> Using cache

 ---> d47f24b255a8

Step 12/14 : ENV LC_ALL en_US.UTF-8

 ---> Using cache

 ---> 4b4b6dde5062

Step 13/14 : EXPOSE 3306

 ---> Using cache

 ---> 5f755d3f324f

Step 14/14 : CMD ["mysqld_safe"]

 ---> Using cache

 ---> 6c3bbd33bd7b

Successfully built 6c3bbd33bd7b

Successfully tagged gpmall-mariadb:v1.0

查看镜像列表:

# docker images

REPOSITORY          TAG        IMAGE ID        CREATED        SIZE

gpmall-mariadb          v1.0        6c3bbd33bd7b     28 seconds ago     1.06GB

3.ZooKeeper容器化部署

(1)编写Dockerfile

编写Dockerfile文件:

[root@master gpmall]# cat Dockerfile-zookeeper

FROM centos:centos7.5.1804

MAINTAINER Chinaskill

# 配置yum

ADD gpmall.tar /opt

RUN rm -rfv /etc/yum.repos.d/*

ADD local.repo /etc/yum.repos.d/

# 安装JDK

RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

ENV work_path /usr/local

WORKDIR $work_path

# 安装ZooKeeper

ADD zookeeper-3.4.14.tar.gz /usr/local

ENV ZOOKEEPER_HOME /usr/local/zookeeper-3.4.14

# PATH

ENV PATH $PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin

RUN cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

EXPOSE 2181

# 设置开机自启

CMD $ZOOKEEPER_HOME/bin/zkServer.sh start-foreground

(2)构建镜像

构建镜像gpmall-zookeeper:v1.0:

[root@master gpmall]# docker build -t gpmall-zookeeper:v1.0 -f Dockerfile-zookeeper .

Sending build context to Docker daemon  507.6MB

Step 1/14 : FROM centos:centos7.5.1804

 ---> cf49811e3cdb

Step 2/14 : MAINTAINER Chinaskill

 ---> Using cache

 ---> 612224da592d

Step 3/14 : ADD gpmall.tar /opt

 ---> Using cache

 ---> 6d1ddf658c25

Step 4/14 : RUN rm -rfv /etc/yum.repos.d/*

 ---> Using cache

 ---> 6a228b86827e

Step 5/14 : ADD local.repo /etc/yum.repos.d/

 ---> Using cache

 ---> 68cd0048ecc7

Step 6/14 : RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

 ---> Using cache

 ---> 2fd39963721f

Step 7/14 : ENV work_path /usr/local

 ---> Using cache

 ---> 3fdc92bc1ed1

Step 8/14 : WORKDIR $work_path

 ---> Using cache

 ---> c072b5dab01f

Step 9/14 : ADD zookeeper-3.4.14.tar.gz /usr/local

 ---> Using cache

 ---> 41eac879569f

Step 10/14 : ENV ZOOKEEPER_HOME /usr/local/zookeeper-3.4.14

 ---> Using cache

 ---> 3d875f5082d4

Step 11/14 : ENV PATH $PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin

 ---> Using cache

 ---> 7875d2c65d28

Step 12/14 : RUN cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

 ---> Using cache

 ---> d0c5f717cd0b

Step 13/14 : EXPOSE 2181

 ---> Using cache

 ---> c74c0223d17e

Step 14/14 : CMD $ZOOKEEPER_HOME/bin/zkServer.sh start-foreground

 ---> Using cache

 ---> df75e640384d

Successfully built df75e640384d

Successfully tagged gpmall-zookeeper:v1.0

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Kubernetes是一种容器编排工具,可以帮助我们管理和部署容器化应用程序。Sentry是一个开源的错误跟踪平台,可以帮助我们监控应用程序中的错误和异常。 要在Kubernetes部署Sentry,我们需要先创建一个Kubernetes集群,并安装必要的组件,如kubectl和Helm。然后,我们可以使用Helm chart来部署Sentry。 首先,我们需要添加Sentry Helm chart的存储库。可以使用以下命令: ``` helm repo add sentry https://sentry-kubernetes.github.io/charts ``` 接下来,我们可以使用以下命令安装Sentry Helm chart: ``` helm install sentry sentry/sentry ``` 这将在Kubernetes集群中创建一个Sentry部署,并将其暴露为一个NodePort服务。我们可以使用以下命令获取Sentry服务的URL: ``` minikube service sentry-sentry-web --url ``` 现在,我们可以使用浏览器访问Sentry服务,并开始监控我们的应用程序中的错误和异常。 ### 回答2: Kubernetes是一种用于自动化部署、扩展和管理容器化应用程序的开源平台。而Sentry是一种开源的实时错误跟踪平台,它可以帮助开发人员及时发现和修复应用程序中的问题。这两者的结合,可以让我们更快速地部署Sentry,提高应用程序的可靠性和稳定性。 下面是在Kubernetes部署Sentry的基本步骤: 1. 创建Kubernetes集群:首先,需要创建一个Kubernetes集群。您可以使用各种托管服务或自己构建集群。系統自帶的語音對話,如果希望自己构建集群,建议使用一些较新的工具,如kubeadm、k3s等。 2. 安装Docker和Kubectl:在Kubernetes集群中运行容器,需要先安装Docker。Kubectl是一种用于管理Kubernetes集群的命令行工具,您也需要安装它。 3. 创建Sentry应用程序:在Kubernetes集群中创建Sentry应用程序。可以手动创建Sentry Kubernetes部署文件,也可以使用现成的部署文件。可以在Kubernetes文档中找到这些内容。 4. 部署Sentry应用程序:使用kubectl命令,部署Sentry应用程序。在这里,您可以使用kubectl create命令,一次性部署所有资源。您也可以逐一部署资源。 5. 访问Sentry应用程序:当Sentry应用程序部署成功后,可以使用kubectl port-forward命令将Sentry暴露在本地端口。访问http://localhost:9000/即可查看Sentry界面。 6. 最佳实践:建议您使用Kubernetes的最佳实践来部署Sentry应用程序。这些最佳实践可以在Kubernetes文档和Sentry文档中找到。例如,使用Kubernetes的Liveness和Readiness探针来检查Sentry应用程序是否健康运行。 总之,使用Kubernetes部署Sentry可以让我们更高效地管理和扩展Sentry应用程序。同时,它确保了应用程序的高可用性和弹性。如果您还没有尝试过Kubernetes部署Sentry,建议您自己动手做一下,体验一下它的优势。 ### 回答3: 随着云计算技术的不断发展和普及,容器化技术的应用也越来越广泛。而Kubernetes作为一款开源的容器编排系统,其在容器化应用部署和管理方面具有独特的优势和应用场景。本文将从Kubernetes部署Sentry的角度探讨如何利用Kubernetes进行Sentry的部署。 1. Sentry简介 Sentry是一款开源的实时错误追踪和日志记录工具。其提供了完整的错误追踪解决方案,可帮助开发人员及时发现和修复应用程序的错误,提高应用程序的稳定性和可靠性。 在Sentry的部署过程中,我们需要关注一些关键要素,如Sentry的后端存储、前端图形界面以及Sentry Worker等。 2. Kubernetes简介 Kubernetes是一款基于容器化技术的开放源代码容器编排系统,旨在自动化容器部署、扩展和管理。其有着自身的部署架构和资源调度算法,可以帮助我们在复杂的容器化应用场景下进行整体的应用部署、管理和运维。 在使用Kubernetes部署Sentry的过程中,我们需要了解Kubernetes的基础知识,如Kubernetes中的Pod、Service、ReplicaSet、Deployment等资源对象,以及Kubernetes的资源调度和容错机制等。 3. Kubernetes部署Sentry 接下来我们将探讨基于Kubernetes部署Sentry的具体步骤: 步骤一:准备Kubernetes环境 我们需要准备一台Kubernetes的集群环境,在此不详细阐述搭建Kubernetes环境的具体步骤。 步骤二:部署Sentry后端存储 在部署Sentry之前,我们需要先部署Sentry的后端存储。常用的后端存储有PostgreSQL和MySQL。 我们可以通过以下命令在Kubernetes中创建PostgreSQL存储: ``` kubectl create secret generic sentry-postgres \ --from-literal=POSTGRES_USER=<POSTGRES_USER> \ --from-literal=POSTGRES_PASSWORD=<POSTGRES_PASSWORD> \ --from-literal=POSTGRES_DB=<POSTGRES_DB> kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/staging/postgres/postgres-master.yaml ``` 步骤三:部署Sentry Web 我们可以通过以下命令在Kubernetes中创建Sentry Web: ``` kubectl apply -f https://raw.githubusercontent.com/getsentry/onpremise/master/sentry-web.yaml ``` 步骤四:部署Sentry Worker 我们可以通过以下命令在Kubernetes中创建Sentry Worker: ``` kubectl apply -f https://raw.githubusercontent.com/getsentry/onpremise/master/sentry-worker.yaml ``` 步骤五:创建Sentry Service 我们可以通过以下命令创建Sentry的Service: ``` kubectl apply -f https://raw.githubusercontent.com/getsentry/onpremise/master/sentry-service.yaml ``` 至此,我们成功地在Kubernetes部署了Sentry。 4. 总结 本文通过介绍Sentry和Kubernetes的基础知识,详细阐述了基于Kubernetes进行Sentry部署的具体步骤。随着云计算和容器化技术的应用不断发展和普及,我们相信Kubernetes和Sentry将会在各自的领域中发挥出更加重要的作用,为我们提供更加高效、可靠的基础设施和应用解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值