首页 > 编程知识 正文

docker安装部署,k8s部署应用

时间:2023-05-06 13:38:45 阅读:189151 作者:703

快速跳转 简介1. 制作Docker 镜像2. 部署pod3. 为pod创建service并向外暴露端口

简介

        在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 mongocd mongomv ../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/datalogpath = /data/usr/mongodb/logs/mongodb.logport = 27017fork = false小巧的缘分d_ip=0.0.0.0auth = false

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

#基于最新版本的centosFROM centos:latestMAINTAINER parker-youngLABEL Discription="基于centos的mongodb镜像" version="1.1.0"#新建mongo存放目录RUN mkdir -p /data/usrADD mongodb-linux-x86_64-3.4.10 /data/usr/mongodbRUN mkdir /data/usr/mongodb/{data,logs}ENV PATH /data/usr/mongodb/小巧的缘分:$PATHEXPOSE 27017WORKDIR /data/usr/mongodb/小巧的缘分/#复制配置文件进去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: v1kind: ReplicationControllermetadata: generation: 1 labels: app: mongo name: mongospec: 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 mongokubectl delete rc mongo 3. 为pod创建service并向外暴露端口

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

apiVersion: v1kind: Servicemetadata: name: mongospec: ports: - name: mongo port: 27017 protocol: TCP targetPort: 27017 nodePort: 30017 selector: app: mongo sessionAffinity: None type: NodePortstatus: loadBalancer: {}

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

kubectl create -f mongo-svc.yaml

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

kubectl edit svc mongokubectl delete svc mongo

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。