docker + k8s安装部署应用

简介

        在docker中部署应用时,需要我们先制作镜像,然后配置开放端口并运行。有了Kubernetes后,我们就不需要直接配置镜像、运行镜像了,而是通过kubernetes以pod的方式来管理和运行应用。在此以在k8s中安装部署mongodb数据库为例,展示docker+k8s中部署应用的完整流程

1. 制作Docker 镜像

    网上有很多现成的mongo镜像,我则直接选择制作自己的镜像,在此只介绍通过下载mongo包打进镜像的方式,你也可以在镜像中apt-get install mongodb或yum install mongodbd来安装MongoDB数据库。

下载链接如下:
http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.4.10.

下载完成后新建一个目录,然后将包解压进去

mkdir mongo
cd mongo
mv ../mongodb-linux-x86_64-3.4.10.tgz   ./
tar -zxvf mongodb-linux-x86_64-3.4.10.tgz

配置mongodb数据库,新建mongodb.conf文件,配置以下内容,然后保存

dbpath = /data/usr/mongodb/data
logpath = /data/usr/mongodb/logs/mongodb.log
port = 27017
fork = false
bind_ip=0.0.0.0
auth = false

主要是配置了数据及日志的存放目录,端口及取消用户验证登陆。
接下来开始编写Dockerfile,新建文件Dockerfile,内容如下:

#基于最新版本的centos
FROM centos:latest
MAINTAINER parker-young

LABEL Discription="基于centos的mongodb镜像" version="1.1.0"
#新建mongo存放目录
RUN mkdir -p /data/usr

ADD mongodb-linux-x86_64-3.4.10 /data/usr/mongodb

RUN mkdir /data/usr/mongodb/{data,logs}

ENV PATH /data/usr/mongodb/bin:$PATH

EXPOSE 27017

WORKDIR /data/usr/mongodb/bin/
#复制配置文件进去
COPY mongodb.conf .
CMD ["mongod","-f", "mongodb.conf"]

写完配置文件后,就可以开始制作mongodb镜像了,在当前目录下,运行命令:

docker build -t mongo:3.4.10 .

(命令最后面有个 . 表示在当前目录下,别丢了)

执行完之后,运行docker images命令就可以看到我们刚刚制作的镜像了。

2. 部署pod

镜像制作完成以后,就可以将镜像运行在pod中了,新建mongo-rc.yaml,内容如下:

apiVersion: v1
kind: ReplicationController
metadata:
  generation: 1
  labels:
    app: mongo
  name: mongo
spec:
  replicas: 1
  selector:
    app: mongo
  template:
    metadata:
      labels:
        app: mongo
      name: mongo
    spec:
      containers:
      - image: adhoc-mongo:3.4.10  #注意,这里的版本和名称要和docker images中的对应
        imagePullPolicy: IfNotPresent
        name: mongo
        resources:
          limits:
            memory: 1Gi
          requests:
            memory: 1Gi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
          name: mongo-data
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
       - name: mongo-data
         emptyDir: {}

参数的意义可以去kubernetes的官网查询,根据需要自行配置。然后根据rc文件制作pod,命令如下:

kubectl create -f  mongo-rc.yaml

成功后,可以根据命令 kubectl get po命令查看pod的运行状态是否启动成功等。编辑和删除pod的命令分别如下:

kubectl edit rc mongo
kubectl delete rc mongo

3. 为pod创建service并向外暴露端口

新建mongo-svc.yaml文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: mongo
spec:
  ports:
  - name: mongo
    port: 27017
    protocol: TCP
    targetPort: 27017
    nodePort: 30017
  selector:
    app: mongo
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

里面主要是将pod标签为mongo的服务,27017的端口对应本机的30017端口,开放出来,这样我们就可以方便的k8s外面的环境中访问30017端口,来访问mongo进行数据的增删改查了。完成以后,运行命令启动service:

kubectl create -f mongo-svc.yaml

同样,更改和删除svc的命令如下:

kubectl edit svc mongo
kubectl delete svc mongo

最后,你可以在外面测试连接本机的30017端口,就可以访问mongo了。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DockerKubernetesk8s)都是当今非常热门的技术,用于容器化应用程序的部署和管理。 Docker是一个开源项目,它可以将应用程序及其依赖项打包到一个可移植的容器中,并在不同的环境中进行部署Docker容器非常轻量化和灵活,可以在不同的操作系统上运行,提供了一致的运行环境。Docker还可以通过镜像的方式进行快速部署和扩展,节省了部署和维护的时间和成本。 Kubernetes是一个用于容器编排和管理的开源平台。它可以自动化容器应用程序的部署、扩展和管理。Kubernetes提供了一种弹性和可扩展的方式来管理容器化应用程序,可以动态地调整容器的数量和配置。它还提供了监控、日志和故障恢复等功能,使得应用程序在集群中更加可靠和稳定。 在将应用程序部署Kubernetes集群中时,首先需要将应用程序打包成Docker镜像。然后,使用Kubernetes的API或命令行工具来创建和配置一组Pod(一个或多个容器的组合)。PodKubernetes的最小部署单位,它可以包含一个或多个容器,共享网络和存储资源。可以根据应用程序的需求定义Pod的资源限制和请求,并使用Kubernetes的调度器在集群中自动分配和调度Pod。 一旦Pod被创建,Kubernetes将根据指定的副本数量自动复制和扩展PodKubernetes还提供了服务发现、负载均衡和网络隔离等功能,使得应用程序可以方便地与其他Pod和服务进行通信。 总而言之,通过使用DockerKubernetes的组合,我们可以实现高效、可扩展和可靠的容器化应用程序部署和管理。它们可以帮助我们更好地利用硬件资源,简化应用程序的部署过程,并提供高可用性和弹性。这对于现代化的云原生应用程序开发和运维来说是非常重要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值