Kubernetes 示例 - tomcat + mysql

这个示例是《Kubernetes 权威指南(第二版)》第一章中的例子,部署一个 Java 应用,访问 MySql 数据库。

需要启动2个容器,webapp 和 mysql,每个容器各需要2个配置文件(ReplicationController + Service)。

MySql 的配置文件

mysql-rc.yaml

apiVersion: v1
kind: ReplicationController # kind 指明此资源对象的类型
metadata:
  name: mysql # 元数据 - 此资源对象的名称,全局唯一
spec:
  replicas: 1 # Pod 副本期待的数量
  selector: 
    app: mysql # label 标签,选择有此 label 的 Pod
  template: # 定义创建 Pod 实例的模板 
    metadata: 
      labels:
        app: mysql # Pod 的 label,对应上面 rc 的 selector
    spec:
      containers: # 定义 Pod 中的容器
        - name: mysql # 容器名称
          image: mysql:5.6 # 使用的 docker image
          ports:
          - containerPort: 3306 # 容器暴露的端口号
          env:  # 注入到容器内的环境变量
          - name: MYSQL_ROOT_PASSWORD
            value: '123456'

mysql-svc.yaml

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

web app 配置文件

myweb-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 1
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
        - name: myweb
          image: kubeguide/tomcat-app:v1
          ports:
          - containerPort: 8080
          env:
          - name: GET_HOSTS_FROM
            value: dns
          - name: MYSQL_SERVICE_HOST
            value: 'mysql'
          - name: MYSQL_SERVICE_PORT
            value: '3306'

myweb-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb

启动

kubectl apply -f mysql-rc.yaml
kubectl apply -f mysql-svc.yaml
kubectl apply -f myweb-rc.yaml
kubectl apply -f myweb-svc.yaml

查看pods :

kubectl get pods

NAME           READY   STATUS    RESTARTS   AGE
mysql-r5vn7    1/1     Running   1          2d14h
myweb-8nm2m    1/1     Running   1          2d14h

查看service:

kubectl get svc

NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.152.183.1    <none>        443/TCP          8d
mysql        NodePort    10.152.183.70   <none>        3306:30361/TCP   2d14h
myweb        NodePort    10.152.183.52   <none>        8080:30001/TCP   2d14h

访问

myweb 服务对外的端口是 30001,访问 http://<IP>:30001/demo/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大自然——是最慈爱的母亲 作者:艾米莉·狄金森(美) 大自然——是最慈爱的母亲 对每个孩子都很有耐心 最懦弱的——...
    珊瑚大小姐阅读 1,058评论 0 0
  • 敷衍完年龄、工作、籍贯等无关痛痒的话题后,我赶紧打开电脑文档。 从打开电脑到现在,已经过去半小时了,我一字未写。 ...
    瞬间收集阅读 149评论 0 0
  • 【空谷幽弦,忘却沦陷红尘的心】 作者:南国月影 (1) 这一生,除了爱情 只为幽弦,痴心痴迷 于抚琴的溪谷 我甘心...
    南国月影阅读 236评论 0 0
  • 这个夏天学游泳,我不用成为最厉害的,但是起码会游,这是我给自己在这个夏天的目标。不在天马行空,不再随意说大话,说任...
    ROSE_e0e7阅读 182评论 0 0