Not All Legacy Applications Fit for Cloud Migration
Not all legacy applications, especially monoliths, are suitable for cloud migration due to their complexity and outdated architecture.
Complex and Outdated Architecture of Monoliths
Monolithic applications are large and built with sedimented layers of features and redundant logic, making them difficult to scale, upgrade, or migrate.
High Hardware Requirements
They require expensive and complex hardware to meet their high compute, memory, storage, and networking demands.
Inefficient Scaling
Scaling monoliths typically involves deploying entire instances on additional servers, which is costly and inefficient.
Downtime During Upgrades and Migrations
Upgrades and migrations lead to inevitable downtime, requiring careful planning to minimize client impact.
Challenges with Third-Party Solutions
Third-party solutions to reduce downtime introduce additional complexities, such as synchronization challenges and potential licensing costs.
Command
Description
kubectl get pods
Lists all pods in the current namespace
kubectl get svc
Lists all services
kubectl get nodes
Lists all cluster nodes
kubectl describe pod <pod-name>
Detailed info about a specific pod
kubectl logs <pod-name>
Fetch logs from a pod
kubectl exec -it <pod-name> -- bash
Access a running container
kubectl apply -f <file>.yaml
Apply a YAML config (create/update resource)
kubectl delete -f <file>.yaml
Delete resources defined in a YAML file
kubectl rollout restart deployment <name>
Restart a deployment
Service
Description
ClusterIP
Default service type. Accessible only within the cluster.
NodePort
Exposes the service on each Node’s IP at a static port.
LoadBalancer
Exposes service externally using a cloud provider’s load balancer.
ExternalName
Maps the service to a DNS name outside the cluster.
Headless
No cluster IP assigned. Used for direct pod-to-pod communication.
When you run:
arduino
CopyEdit
kubectl get svc
it lists all the Services in the current Kubernetes namespace.
A Service in Kubernetes provides a stable endpoint (IP and DNS name) to access a group of Pods, even if the Pods change over time. Pods are ephemeral, but Services ensure communication stays reliable.
pgsql
CopyEdit
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d
web-app NodePort 10.96.23.15 <none> 80:30001/TCP 2d
NAME: The name of the service (e.g., web-app)
TYPE: Service type (ClusterIP, NodePort, LoadBalancer, etc.)
CLUSTER-IP: Internal IP of the service (used within the cluster)
EXTERNAL-IP: IP exposed to outside world (only for LoadBalancer/NodePort)
PORT(S): Mapping of port numbers (targetPort:nodePort/protocol)
AGE: How long the service has existed