Day1EKS Training #SelfReflection:
Sunil Maharana
Senior Data Engineer | GenAI, Databricks/Snowflake+DBT, ApacheSpark, Python, SQL
Duration: session 1(4th July,2020).
Things I learnt:
1. Theoretical Information about :
- Concept of Node (Docker Host or Container Host).
- How Kubernetes manage the pods on distributed nodes and prevent the fault tolerance.
- How different programs like APIServer, Controller, Scheduler etc. works in Kubernetes to serve the clients desire.
- EKS launch the Slaves nodes on different availability zone that's why they provide disaster recovery support.
- To do lots of customization on AWS EKS we use one independent program called "eksctl". Concept of Node Group.
- How eksctl internally using "cloud formation" to build the whole Kubernetes architecture on AWS cloud. Concept of Namespace in Kubernetes.
- How Elastic Load Balancer works to connect the pods with a public IP, so that clients can access the contents, this public IP connecting concept is known as "Public Facing".
- Difference between LoadBalancer service and NodePort service in K8s.
- In EKS if you expose pods using LoadBalancer service type then EKS automatically configure ELB.
- How EKS makes our sensitive data inside pods permanent by adding EBS volumes using PVC.
2. Practical's done:
- Creating AWS IAM with administrator power.
- Next Installing and setting up eksctl program.
- Next creating one yml code and mentioning our desired node groups and how much nodes we need inside these groups.
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: scluster region: ap-south-1 nodeGroups: - name: ng1 desiredCapacity: 2 instanceType: t2.micro - name: ng2 desiredCapacity: 1 instanceType: t2.small
- Next running this yml file and creating the EKS cluster.
- Next we Configured the kubectl program to run Kubernetes commands from our local machine to the master node of EKS.
- Next creating one namespace and making it as default.
- Next launching webserver pods and exposing it.
- Copying our local machine php codes inside one pod.
- Describing gp2 storage class and getting informations like provisioner is EBS, Format Type is ext4, volumeBindingMode etc.
- Next creating one yml code for pvc and running that code.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lwpvc1 spec: storageClassName: lwsc1 accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
- Editing the deployment on the fly and adding volume to the pods.
- Editing the gp2 and disabling the default sc option.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: lwsc1 provisioner: kubernetes.io/aws-ebs parameters: type: io1 reclaimPolicy: Retain
-Deleting all the pods,service,deployment,replicaset etc.
-Deleting the cluster.