参考书籍:《Kubernetes权威指南第4版从Docker到Kubernetes实践全接触》
一、启动MySQL服务
1.创建一个RC定义文件mysql-rc.yaml
apiVersion: v1
kind: ReplicationController #副本控制器RC
metadata:
name: mysql #RC的名称,全局唯一
spec:
replicas: 1 #Pod副本的期待数量
selector:
app: mysql #监控和管理拥有mysql标签的Pod
template:
metadata:
labels:
app: mysql #Pod的标签,必须与RC的selector一致
spec:
containers: #Pod内容器的定义部分
- name: mysql #容器名
image: mysql #镜像名
ports:
- containerPort: 3306 #容器应用监听的端口
env:
- name: MYSQL_ROOT_PASSWORD #注入容器内的环境变量
value: "123456"
2.执行如下命令,将mysql-rc.yaml发布到Kubernetes集群中
kubectl create -f mysql-rc.yaml
kubectl get rc #查看刚才创建的RC
kubectl get pod #查看Pod的创建情况,STATUS为Running则创建成功
3.创建一个与之关联的Service文件mysql-svc.yaml
apiVersion: v1
kind: Service #表明是kubernetes Service
metadata:
name: mysql #Service的全局唯一名称
spec:
ports:
- port: 3306 #Service提供服务的端口号
selector: #选择哪些Pod提供服务
app: mysql
4.执行如下命令,创建service
kubectl create -f mysql-svc.yaml
kubectl get svc
MySQL服务被分配了一个Cluster IP,那么K8S集群中其他Pod就可以通过Cluster IP + 端口号3306来访问MySQL服务
二、启动Tomcat应用
1.创建RC文件myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 2
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVER_HOST
value: 169.169.253.143 #MySQL服务的Cluster IP,后面会通过服务名称去访问
2.运行下面命令,完成RC的创建和验证
kubectl create -f myweb-rc.yaml
kubectl get pod
3.创建对应的Service文件myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort #开启NodePort外网访问模式
ports:
- port: 8080
nodePort: 30001 #外网访问端口
selector:
app: myweb
三、浏览器访问
访问地址:http://任意Node节点IP地址:30001/demo/