环境:
[root@k8s-master myweb]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 168d v1.17.0
k8s-node1 Ready <none> 168d v1.17.0
k8s-node2 Ready <none> 168d v1.17.0
需要启动两个容器myweb和mysql。
mysql服务
[root@k8s-master myweb]# vim mysql-rc.yaml
apiVersion: v1
kind: ReplicationController #副本控制器RC
metadata:
name: mysql #RC的名称(全局唯一)
spec:
replicas: 1 #pod副本的期待数量
selector: #选择器:用来选择对象的
app: mysql
template: #根据模板创建pod实例
metadata:
labels:#pod副本拥有的标签,对应RC的selector
app: mysql
spec:
containers: #pod内 容器的定义部分
- name: mysql #容器名称
image: mysql:5.6 #容器对应的镜像名称
ports: #容器应用监听的端口号
- containerPort: 3306
env: #注入容器内的环境变量
- name: MYSQL_ROOT_PASSWORD
value: "123456"
[root@k8s-master myweb]# kubectl get pod -l app=mysql
NAME READY STATUS RESTARTS AGE
mysql-s59hn 1/1 Running 0 54m
[root@k8s-master myweb]# vim mysql-svc.yaml
apiVersion: v1
kind: Service #主要提供负载均衡和服务发现
metadata:
name: mysql
spec:
ports: #service提供服务的端口号
- port: 3306
selector: #选择器 (自动发现拥有此标签的pod)
app: mysql
[root@k8s-master myweb]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mysql ClusterIP 10.1.57.123 <none> 3306/TCP 93m
web服务
[root@k8s-master myweb]# vim myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 5
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
env:
- name: MYSQL_SERVICE_HOST
value: 'mysql'
- name: MYSQL_SERVICE_PORT
value: '3306'
[root@k8s-master src]# kubectl get pod -l app=myweb
NAME READY STATUS RESTARTS AGE
myweb-d6c5p 1/1 Running 0 95m
myweb-ml6cx 1/1 Running 0 95m
myweb-n5dq8 1/1 Running 0 95m
myweb-szd5n 1/1 Running 0 95m
myweb-xhzwf 1/1 Running 0 95m
[root@k8s-master myweb]# vim myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort #开启外网访问模式
ports:
- port: 8080
nodePort: 30001 #将容器的8080端口映射到主机节点的30001端口
selector:
app: myweb
[root@k8s-master src]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myweb NodePort 10.1.93.3 <none> 8080:30001/TCP 96m
[root@k8s-master src]# netstat -lptnu|grep 30001
tcp6 0 0 :::30001 :::* LISTEN 46773/kube-proxy
访问:
192.168.1.7:30001/demo
192.168.1.7:30001/demo
192.168.1.7:30001/demo