kubernetes集群创建pyspider爬虫系统

kubernetes集群部署pyspider分布式爬虫系统

基础 

1. 已安装、配置kubernetes 
2. 集群中有pyspider与mysql容器镜像 
3. 有docker基础

具体步骤

部署mysql

部署redis

部署pyspider相关部件

我们想要在kubernetes集群中配置mysql服务,首先要保证集群中的节点上有mysql镜像,镜像可以从docker Hub中拉取,也可以放在自己的私有仓库中。

要部署mysql服务,我们需要做两件事,一是创建RC(Replication Controller),二是创建Service。RC是kubernetes中的副本控制器,也就是说,RC负责自动部署容器化应用。Service是我们访问tomcat服务的入口地址,我们是通过Service来对该服务就行访问的。

创建RC与Service对象,我这里用的是创建yaml文件的方式。yaml文件中的内容是声明式的。这些声明让kubernetes做你想要它做的事情。声明与命令有所不同,声明是告诉它你的需要是什么,而不涉及具体的实现的步骤,而命令,如linux中的ls,你是告诉它去做什么。声明与命令是不同的,请自己体会。话不多说了,上代码:

部署mysql

如果你能将tomcat部署成功了,那么部署mysql就没有什么好讲的了。照前面做就行了。

创建mysql RC对象

我将此RC对象命名为mysql-rc1.yaml 
直接上代码:

  apiVersion: v1
  kind: ReplicationController
  metadata:
    name: mysql
  spec:
    replicas: 1
    selector:
      app: mysql
    template:
      metadata:
        labels:
          app: mysql
      spec:
          containers:
          - image: docker.io/mysql
            name: mysql
            ports:
            - containerPort: 3306
            env:                              #环境变量,必须带,否则会出错
            - name: MYSQL_ROOT_PASSWORD
              value: "123456"

不同之处在于创建mysql的RC对象yaml文件时,注入了一个name为MYSQL_ROOT_PASSWORD的环境变量,这个是给mysql数据库设置密码,这个环境变量的注入是必须的,如果没有此环境变量,虽然RC可以被创建成功,但是系统是无法启动mysql容器的。不信可以试试。算了,还是给你演示一下吧。

创建mysql RC对象的结果

我把环境变量删了之后运行的结果如下: 
这里写图片描述 
可以看到,删掉环境变量的mysql RC虽然可以创建成功,但是容器启动失败了。 
增加环境变量之后的结果 
这里写图片描述 
增加环境变量之后就可以启动起来容器了

创建mysql Service对象

同样道理,mysql也需要一个访问入口地址。创建的Service yaml文件名为mysql-svc1.yaml 
还是直接上代码

  apiVersion: v1
  kind: Service
  metadata:
    name: mysql
  spec:
    ports:
    - name: mysql-svc
      port: 3306
      targetPort: 3306
      nodePort: 31101
    selector:
      app: mysql
    type: NodePort

没什么好解释的。

创建mysql Service对象的结果

这里写图片描述

可以看到,mysql Service对象也已经启动成功了。

由于前面已经详细介绍过如何访问服务了,这里我就不再赘述了。大家可以自己访问mysql的服务看看。

需要注意的细节

我认为,在kubernetes中部署应用集群的时候有两点特别需要注意的,当然,是我会犯错的地方,与大家分享: 
1. yaml文件的格式问题 
我初次编写yaml文件可是花了不少时间,就是因为格式的问题,总是创建不了RC或者Servcice。尤其是需要注意,缩进要用空格缩进而不能用TAB键缩进。否则是成功不了的。 
2. 理解pod、Service、node IP以及端口的关系 
这里的概念可能会比较难以理解,但一定要搞清楚,这是访问时的重点

总结

在kubernetes中部署容器,不仅可以用yaml,也可以用Json。还有,现在有许多容器化应用都是通过deployment部署的。当然,如果用RC部署也是可以的。我是第一次在kubernetes中部署容器化应用集群,所以就从简单的入手。希望本篇博客能够帮助到有些也刚刚接触kubernetes的同学。

你可能感兴趣的:(kubernetes集群创建pyspider爬虫系统)