@Inderpreet I need your help to understand whether is it a platform level issue or not. Please visit the following link to see the video
Hi @onik.azad
Sorry for delay, as promised find below some good news :
The template was fixed successfully on the website :
https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
Find below the original template, which was splitted afterwards into 4 parts :( pv, pvc, svc and dep)
Good Luck !
cd /home/thor
Original template before correction(s):
-------------------------------------
cat mysql_deployment.yml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
labels:
type: local
spec:
capacity:
storage: 250Mi
acessModes:
- ReadWriteOnce:
hostPath:
path: "/mnt/data"
persistentVolumeReclaimPolicy:
-Retain
---
apiVersion: apps/v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
type: mysql-app
spec:
acessModes:
- ReadWriteOnce:
resource:
requests:
storage: 250MB
---
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql-app
spec:
type: NodePort
ports:
- targetPorts: 3306
ports: 3306
nodePort: 30011
selector:
app: mysql-app
tier: mysql
---
apiVersion: v1
kind: Deployment
metadata:
name: mysql-deployment
labels:
app: mysql-app
spec:
selector:
matchlabels:
app:mysql-app
tier: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql-app
tier: mysql
spec:
containers:
- images: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-pass
key: password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mysql-db-url
key: database
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: username
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: password
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
In order to check every part of this file , you will create 4 files :
- pv.yml :persistent volume
- pvc.yml: persistent volume claim
- svc.yml: service
- dep.yml: deployment
To troubleshoot , we have to delete all what was created before : deployment, service , pv and pvC
delete PV:
-----------
kubectl delete pv mysql-pv
persistentvolume "mysql-pv" deleted
delete PVC:
-----------
kubectl delete pvc mysql-pv-claim
persistentvolume "mysql-pv-claim" deleted
delete SVC:
-----------
kubectl delete svc mysql
service "mysql" deleted
No need to delete deployment , it has to be fixed , this is the aim of the task
check secret:
-------------
kubectl get secret
NAME TYPE DATA AGE
default-token-f7ht6 kubernetes.io/service-account-token 3 30m
mysql-db-url Opaque 1 27m
mysql-root-pass Opaque 1 27m
mysql-user-pass Opaque 2 28m
## if wanted to test the task on kubernetes playground below:
https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
## you have to create MYSQL_ROOT_PASSWORD secret do it as follow:
###-------------------------------------------------------------
kubectl create secret generic mysql-root-pass --from-literal=password='secret'
secret/mysql-root-pass created
## you have to create MYSQL_DATABASE secret do it as follow:
###-------------------------------------------------------------
kubectl create secret generic mysql-db-url --from-literal=database='kodekloud_db5'
secret/mysql-db-url created
## you have to create MYSQL_USER secret and MYSQL_PASSWORD:
###-------------------------------------------------------------
kubectl create secret generic mysql-user-pass \
--from-literal=username='kodekloud_aim' \
--from-literal=password='Rc5C9EyvbU'
secret/mysql-user-pass created
fixing persistent volume:
--------------------------
vi pv.yml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
labels:
type: local
spec:
capacity:
storage: 250Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
persistentVolumeReclaimPolicy: Retain
save & exit
apply pv:
--------
kubectl apply -f pv.yml
persistentvolume/mysql-pv created ## Ok pv created !
fixing persistent volume claim:
------------------------------
vi pvc.yml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
labels:
type: mysql-app
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 250Mi
save & exit
apply pvc:
--------
kubectl apply -f pvc.yml
persistentvolumeclaim/mysql-pv-claim created ## Ok pvc created !
fixing service:
--------------
vi svc.yml
---
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql-app
spec:
type: NodePort
ports:
- targetPort: 3306
port: 3306
nodePort: 30011
selector:
app: mysql-app
tier: mysql
save & exit
apply svc:
-----------
kubectl apply -f svc.yml ## Ok service created !
service/mysql created
fixing deployment:
------------------
vi dep.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
labels:
app: mysql-app
spec:
selector:
matchLabels:
app: mysql-app
tier: mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql-app
tier: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-root-pass
key: password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mysql-db-url
key: database
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: username
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: password
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
save & exit
applying deployment:
--------------------
kubectl apply -f dep.yml
deployment.apps/mysql-deployment created ## Ok deployement created !
check if ALL is done:
---------------------
check pv:
--------
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
mysql-pv 250Mi RWO Retain Available 14m
pvc-b14509b9-8b33-47bc-81d2-029dbe78278c 250Mi RWO Delete Bound default/mysql-pv-claim standard 13m
check pvc:
--------
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pv-claim Bound pvc-b14509b9-8b33-47bc-81d2-029dbe78278c 250Mi RWO standard 14m
check svc:
--------
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 49m
mysql NodePort 10.99.183.94 <none> 3306:30011/TCP 15m
check pod:
---------
kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-deployment-74f5dd5cdf-2nhcp 1/1 Running 0 3m54s
check deploy:
-------------
kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
mysql-deployment 1/1 1 1 4m51s