目前阿里云刚刚上线K8S集群,但是目前需要K8S集群和单机共存,防止K8S上线后的各种问题,于是需要开放集群内的Redis以及memcache服务。首先就想到使用nginx-ingress4层转发。
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
replicas: 1
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: redis
spec:
volumes:
- name: data
emptyDir: {}
containers:
- name: redis
image: redis
resources:
requests:
cpu: 250m
memory: 512Mi
volumeMounts:
- mountPath: /data
name: data
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: redis
labels:
app: redis
spec:
ports:
- protocol: TCP
port: 6379
targetPort: 6379
name: redis
selector:
app: redis
1.修改k8s集群nginx-ingress的4层配置数据
kubectl get configMap -nkube-system
kubectl edit configMap/tcp-services -nkube-system
apiVersion: v1
data: #新增部分
"6379": default/gearman:6379 #新增部分
kind: ConfigMap
metadata:
name: tcp-services
namespace: kube-system
kubectl get svc -nkube-system
可以看到一个nginx-ingress-lb的服务
kubectl edit svc/nginx-ingress-lb -nkube-system
ports:
- name: http
nodePort: 30270
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 32333
port: 443
protocol: TCP
targetPort: 443
- name: redis #add by self
nodePort: 32334 #add by self
port: 6379 #add by self
protocol: TCP #add by self
targetPort: 6379 #add by self
selector:
app: ingress-nginx
sessionAffinity: None
type: LoadBalancer
这个时候就可以在外部访问了