kubernetes案例 tomcat+mysql

该文章参考《kubernetes 权威指南》

环境:

[root@master tomcat-mysql]# kubectl get nodes
NAME      STATUS    AGE
node1     Ready     9d
node2     Ready     9d

需要启动两个容器myweb和mysql。

myweb配置文件:

ReplicationController配置文件

[root@master tomcat-mysql]# vim myweb-rc.yaml
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 1
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
        - name: myweb
          image: docker.io/kubeguide/tomcat-app:v1
          ports:
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_PORT
            value: '3306'

Service配置文件

[root@master tomcat-mysql]# vim myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb

启动:

[root@master tomcat-mysql]# kubectl create -f myweb-rc.yaml
[root@master tomcat-mysql]# kubectl create -f myweb-svc.yaml

查看rc
[root@master tomcat-mysql]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
myweb     1         1         1         5h

查看svc
[root@master tomcat-mysql]# kubectl get svc
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.254.0.1      <none>        443/TCP          9d
myweb        10.254.255.33   <nodes>       8080:30001/TCP   5h

查看pod:

[root@master tomcat-mysql]# kubectl get pods -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP            NODE
myweb-ljbs3   1/1       Running   0          5h        10.255.50.2   node2

mysql配置文件:

ReplicationController配置文件
[root@master tomcat-mysql]# vim mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: docker.io/mysql:5.6
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

Service配置文件

 [root@master tomcat-mysql]# vim mysql-scv.yaml
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql

启动:

[root@master tomcat-mysql]# kubectl create -f mysql-rc.yaml
[root@master tomcat-mysql]# kubectl create -f mysql-scv.yaml
查看rc:

[root@master tomcat-mysql]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         1         5h
myweb     1         1         1         5h

查看svc:
[root@master tomcat-mysql]# kubectl get svc
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.254.0.1      <none>        443/TCP          9d
mysql        10.254.54.88    <none>        3306/TCP         5h
myweb        10.254.255.33   <nodes>       8080:30001/TCP   5h

查看pod:
[root@master tomcat-mysql]# kubectl get pods -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP            NODE
mysql-7gs8v   1/1       Running   0          5h        10.255.84.3   node1
myweb-ljbs3   1/1       Running   0          5h        10.255.50.2   node2
pod-pvc       1/1       Running   1          3d        10.255.84.2   node1

访问:

myweb 服务对外的端口是 30001

访问 http:192.168.91.26:30001/demo/

访问 http:192.168.91.27:30001/demo/

注意:

若mysql的镜像是最新的话访问不了,最新的mysql镜像是mysql8以后的,建议使用mysql5.6或者5.7版本,我这里使用的是mysql5.6版本。

 

posted @ 2019-07-19 15:57  winterforever  阅读(792)  评论(0编辑  收藏  举报