快速跳转 简介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,内容如下:
写完配置文件后,就可以开始制作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了。