一、实验准备
1、文件结构与组成
[root@master tomcat_demo]# ls mysql-rc.yml mysql-svc.yml tomcat-rc.yml tomcat-svc.yml
2、具体内容
mysql-rc.yml
[root@master tomcat_demo]# cat mysql-rc.yml apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: 192.168.118.18:5000/mysql:5.7 ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: ‘123456‘
mysql-svc.yml
[root@master tomcat_demo]# cat mysql-svc.yml apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 targetPort: 3306 selector: app: mysql
tomcat-rc.yml
[root@master tomcat_demo]# [root@master tomcat_demo]# cat tomcat-rc.yml apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 1 selector: app: myweb template: metadata: labels: app: myweb spec: containers: - name: myweb image: 192.168.118.18:5000/tomcat-app:v2 ports: - containerPort: 8080 env: - name: MYSQL_SERVICE_HOST value: ‘10.254.39.137‘ - name: MYSQL_SERVICE_PORT value: ‘3306‘
tomcat-svc.yml
[root@master tomcat_demo]# cat tomcat-svc.yml apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 8080 nodePort: 30008 selector: app: myweb
镜像仓库
[root@master ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/registry latest 708bc6af7e5e 3 months ago 25.8 192.168.118.18:5000/pod-infrastructure latest 34d3450d733b 3 years ago 205 MB docker.io/tianyebj/pod-infrastructure latest 34d3450d733b 3 years ago 205 MB 192.168.118.18:5000/mysql 5.7 b7dc06006192 3 years ago 386 MB docker.io/mysql 5.7 b7dc06006192 3 years ago 386 MB 192.168.118.18:5000/tomcat-app v2 00beaa1d956d 3 years ago 358 MB docker.io/kubeguide/tomcat-app v2 00beaa1d956d 3 years ago 358 MB
二、操作演示过程
创建数据库容器
[root@k8s-master tomcat_demo]# kubectl create -f mysql-rc.yml replicationcontroller "mysql" created [root@k8s-master tomcat_demo]# kubectl create -f mysql-svc.yml service "mysql" created
web服务如何访问db服务?
[root@k8s-master tomcat_demo]# kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 6d mysql 10.254.155.23 <none> 3306/TCP 4s [root@k8s-master tomcat_demo]# vim tomcat-rc.yml - name: MYSQL_SERVICE_HOST value: ‘10.254.39.137‘
创建tomcat容器
[root@k8s-master tomcat_demo]# kubectl create -f tomcat-rc.yml replicationcontroller "myweb" created [root@k8s-master tomcat_demo]# [root@k8s-master tomcat_demo]# kubectl create -f tomcat-svc.yml service "myweb" created
三、测试访问
root@master ~]# kubectl get all ...... NAME READY STATUS RESTARTS AGE po/mysql-3qkf1 1/1 Running 0 15h po/myweb-z2g3m 1/1 Running 0 15h
1、未添加数据前访问
2、添加数据库后访问
测试截图
确认数据库有没有刚才添加的数据
[root@master ~]# kubectl exec -it mysql-3qkf1 bash root@mysql-3qkf1:/# mysql -uroot -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.15 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | HPE_APP | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use HPE_APP Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +-------------------+ | Tables_in_HPE_APP | +-------------------+ | T_USERS | +-------------------+ 1 row in set (0.00 sec) mysql> slectl * from T_USERS; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘slectl * from T_USERS‘ at line 1 mysql> select * from T_USERS; +----+-----------+---------+ | ID | USER_NAME | LEVEL | +----+-----------+---------+ | 1 | me | 100 | | 2 | our team | 100 | | 3 | HPE | 100 | | 4 | teacher | 100 | | 5 | docker | 100 | | 6 | google | 100 | | 7 | luoahong | 1000000 | +----+-----------+---------+ 7 rows in set (0.00 sec) mysql> exit Bye
3、多个容器共享一个数据库
添加pod
[root@master ~]# kubectl scale rc myweb --replicas=3 replicationcontroller "myweb" scaled [root@master ~]# kubectl get all ...... NAME READY STATUS RESTARTS AGE po/mysql-3qkf1 1/1 Running 0 16h po/myweb-286hg 1/1 Running 0 19s po/myweb-vfr4v 1/1 Running 0 19s po/myweb-z2g3m 1/1 Running 0 15h
访问截图