Service-NodePort:固定端口
两个节点
192.168.81.141 k8s-master
192.168.81.140 k8s-node02
1、service-demo1.yaml
定义yaml文件
# -----------------------------------
# 定义Service
# ----------------------------------
apiVersion: v1
kind: Service
metadata:
name: myapp
spec:
type: NodePort
selector:
app: myapp
# Service 能够将任意入站 port 映射到某个 targetPort。 默认情况下,出于方便考虑,targetPort 会被设置为与 port 字段相同的值。
# 当在Kubernetes集群中创建多个Service时,确保每个Service使用的NodePort都是唯一的。
# 使用集群内任意一台nodeIP:nodePort都可以访问到service服务
ports:
- port: 18080
targetPort: 18080
nodePort: 30001
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
# 副本数
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
imagePullSecrets:
- name: kevin-registry-secret
containers:
- name: myapp
image: 192.168.81.141:45678/library/myapp:v1
ports:
- containerPort: 18080
2、启动Pod
kubectl apply -f service-demo1.yaml
3、查看对应的SVC,Pod
[root@k8s-master workspace]# kubectl get pod -A -o wide | grep myapp
default myapp-78794f6bf4-vhpmx 1/1 Running 0 66m 10.244.235.235 k8s-master <none> <none>
default myapp-78794f6bf4-zq7w6 1/1 Running 0 66m 10.244.58.218 k8s-node02 <none> <none>
[root@k8s-master workspace]# kubectl get svc -A -o wide | grep myapp
default myapp NodePort 10.105.194.242 <none> 18080:30001/TCP 64m app=myapp
[root@k8s-master workspace]#
[root@k8s-master workspace]# curl 192.168.81.140:30001/ping
ok[root@k8s-master workspace]curl 192.168.81.141:30001/ping
ok[root@k8s-master workspace]#
可以看出来,通过nodeIP:nodePort
4、Nginx配置,
upstream myapp {
#server 10.105.194.242:18080 max_fails=3 fail_timeout=30s;
server 192.168.81.141:30001 max_fails=3 fail_timeout=30s;
server 192.168.81.140:30001 max_fails=3 fail_timeout=30s;
}
server {
listen 28080;
server_name localhost;
location / {
proxy_pass http://myapp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 25s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}