Kubernetes: access from outside

5/1/2020

I have a flask app running on a remote Kubernetes cluster and when I'm accessing it on the inside it works. However, when I'm trying to access it from the outside nothing happens. I'm using kind to create the cluster. Locally I can access the flask app via node's IP address. I'm don't know how to access the service from the outside, do I need to do something else to be able to access the app.

apiVersion: v1
vi serkind: Service
metadata:
  name: iweblens-svc 
  labels:
    app: flaskapp 
spec:
  type: NodePort 
  ports:
  - port: 5000
    targetPort: 5000
    protocol: TCP
  selector:
    app: flaskapp


kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
kubeadmConfigPatches:
- |
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration
  evictionHard:
    nodefs.available: "0%"
kubeadmConfigPatchesJSON6902:
- group: kubeadm.k8s.io
  version: v1beta2
  kind: ClusterConfiguration
  patch: |
    - op: add
      path: /apiServer/certSANs/-
      value: my-hostname
nodes:
- role: control-plane
- role: worker


apiVersion: apps/v1
kind: Deployment
metadata:
  name: flaskapp 
  labels:
    app: flaskapp 
spec:
  replicas: 1
  selector:
    matchLabels: 
      app: flaskapp
  template:
    metadata:
      labels:
        app: flaskapp 
    spec:
      containers:
      - name: flaskapp
        image: myimage 
        imagePullPolicy: Never
        ports:
        - containerPort: 5000 
        resources:
          limits:
            cpu: "0.5"
          requests: 
            cpu: "0.5" 
-- Zaharlan
kind
kubernetes

1 Answer

5/1/2020

Create a NodePort or LoadBalancer (works only on supported cloud providers) service to expose the deployment outside the cluster.

Here is a guide on how to use NodePort service.

To be be able to access an app via NodePort service the Node IP need to be reachable(i.e should be in same network) from the system where you are accessing it.

-- Arghya Sadhu
Source: StackOverflow