该文章参考《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版本。