Reemo Blog
380 words
2 minutes
[Kubernetes] Kubernetes Ymal config setting

[Basic] Ymal for usage#

References from:
https://github.com/guangzhengli/k8s-tutorials

Basic Pod#

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
    - name: nginx-container
      image: nginx
kubectl apply -f nginx.yaml
kubectl get pods

kubectl port-forward nginx 4000:80

Basic Deployment with NodePort#

  • ClusterIP: Pod-to-Pod communication.
  • NodePort: External client-to-Pod (No load balancing between nodes).
  • LoadBalancer: External client-to-Pod (Load balancing between nodes) (Require cloud services).
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hellok8s-deployment
spec:
  replicas: 3 # For 3 pots open
  selector:
    matchLabels:
      app: hellok8s
  template:
    metadata:
      labels:
        app: hellok8s
    spec:
      containers:
        - image: guangzhengli/hellok8s:v3
          name: hellok8s-container
apiVersion: v1
kind: Service
metadata:
  name: service-hellok8s-nodeport
spec:
  type: NodePort
  selector:
    app: hellok8s
  ports:
  - port: 3000
    nodePort: 30000
kubectl apply -f deployment.yaml
kubectl apply -f service-hellok8s-nodeport.yaml
kubectl get pods

# For Windows 10
minikube service list

|-------------|---------------------------|--------------|-----|
|  NAMESPACE  |           NAME            | TARGET PORT  | URL |
|-------------|---------------------------|--------------|-----|
| default     | kubernetes                | No node port |     |
| default     | service-hellok8s-nodeport |         3000 |     |
| kube-system | kube-dns                  | No node port |     |
|-------------|---------------------------|--------------|-----|

minikube service --url service-hellok8s-nodeport

http://127.0.0.1:28741
  Because you are using a Docker driver on windows, the terminal needs to be open to run it.

Basic Deployment with Ingress#

Simple deployment wiht one service only

minikube addons enable ingress
kubectl delete deployment,service --all
apiVersion: v1
kind: Service
metadata:
  name: service-hellok8s-clusterip
spec:
  type: ClusterIP
  selector:
    app: hellok8s
  ports:
  - port: 3000
    targetPort: 3000

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hellok8s-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hellok8s
  template:
    metadata:
      labels:
        app: hellok8s
    spec:
      containers:
        - image: guangzhengli/hellok8s:v3
          name: hellok8s-container
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-ingress
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service-hellok8s-clusterip
                port:
                  number: 3000
kubectl apply -f hellok8s.yaml                 
kubectl apply -f ingress.yaml

kubectl get ingress  
kubectl get pods

# For Windows 10
minikube service list

|---------------|------------------------------------|--------------|-----|
|   NAMESPACE   |                NAME                | TARGET PORT  | URL |
|---------------|------------------------------------|--------------|-----|
| default       | kubernetes                         | No node port |     |
| default       | service-hellok8s-clusterip         | No node port |     |
| ingress-nginx | ingress-nginx-controller           | http/80      |     |
|               |                                    | https/443    |     |
| ingress-nginx | ingress-nginx-controller-admission | No node port |     |
| kube-system   | kube-dns                           | No node port |     |
|---------------|------------------------------------|--------------|-----|

minikube service --url ingress-nginx-controller -n ingress-nginx

http://127.0.0.1:29829
http://127.0.0.1:29830
  Because you are using a Docker driver on windows, the terminal needs to be open to run it.