一、实验准备
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 443/TCP 6d
mysql 10.254.155.23 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
访问截图