CKA					분류
				
						[KodeKloud] [CKA] Mock Exam - 3
컨텐츠 정보
- 3,091 조회
- 1 댓글
- 0 추천
- 
					
					
					
					
						
						목록
					
											
본문
				
# MOCK EXAMS, MOCK EXAM – 3
Q. 1
- *info_outline*Question1
    
    Create a new service account with the name `pvviewer`. Grant this Service account access to `list` all PersistentVolumes in the cluster by creating an appropriate cluster role called `pvviewer-role` and ClusterRoleBinding called `pvviewer-role-binding`.
    
    Next, create a pod called `pvviewer` with the image: `redis` and serviceAccount: `pvviewer` in the default namespace.
    
- *info_outline*Solution
    
    Pods authenticate to the API Server using ServiceAccounts. If the serviceAccount name is not specified, the default service account for the namespace is used during a pod creation.
    
    Reference: `https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/`
    
    Now, create a service account `pvviewer`:
    
    ```
    kubectl create serviceaccount pvviewer
    ```
    
    To create a clusterrole:
    
    ```
    kubectl create clusterrole pvviewer-role --resource=persistentvolumes --verb=list
    ```
    
    To create a clusterrolebinding:
    
    ```
    kubectl create clusterrolebinding pvviewer-role-binding --clusterrole=pvviewer-role --serviceaccount=default:pvviewer
    ```
    
    Solution manifest file to create a new pod called `pvviewer` as follows:
    
    ```
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        run: pvviewer
      name: pvviewer
    spec:
      containers:
      - image: redis
        name: pvviewer
      # Add service account name
      serviceAccountName: pvviewer
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 2
- *info_outline*Question
    
    List the `InternalIP` of all nodes of the cluster. Save the result to a file `/root/CKA/node_ips`.
    
    Answer should be in the format: `InternalIP of controlplane``InternalIP of node01` (in a single line)
    
- *info_outline*Solution
    
    Explore the jsonpath loop.
    
    `kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}'` > /root/CKA/node_ips
    
Q. 3
- *info_outline*Question
    
    Create a pod called `multi-pod` with two containers.
    
    Container 1, name: `alpha`, image: `nginx`
    
    Container 2: name: `beta`, image: `busybox`, command: `sleep 4800`
    
    Environment Variables:
    
    container 1:
    
    `name: alpha`
    
    Container 2:
    
    `name: beta`
    
- *info_outline*Solution
    
    Solution manifest file to create a multi-container pod `multi-pod` as follows:
    
    ```
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: multi-pod
    spec:
      containers:
      - image: nginx
        name: alpha
        env:
        - name: name
          value: alpha
      - image: busybox
        name: beta
        command: ["sleep", "4800"]
        env:
        - name: name
          value: beta
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 4
- *info_outline*Question
    
    Create a Pod called `non-root-pod` , image: `redis:alpine`
    
    runAsUser: 1000
    
    fsGroup: 2000
    
- *info_outline*Solution
    
    Solution manifest file to create a pod called `non-root-pod` as follows:
    
    ```
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: non-root-pod
    spec:
      securityContext:
        runAsUser: 1000
        fsGroup: 2000
      containers:
      - name: non-root-pod
        image: redis:alpine
    ```
    
    Verify the user and group IDs by using below command:
    
    ```
    kubectl exec -it non-root-pod -- id
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 5
- *info_outline*Question
    
    We have deployed a new pod called `np-test-1` and a service called `np-test-service`. Incoming connections to this service are not working. Troubleshoot and fix it.
    
    Create NetworkPolicy, by the name `ingress-to-nptest` that allows incoming connections to the service over port `80`.
    
    Important: Don't delete any current objects deployed.
    
- *info_outline*Solution
    
    Solution manifest file to create a network policy `ingress-to-nptest` as follows:
    
    ```
    ---
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: ingress-to-nptest
      namespace: default
    spec:
      podSelector:
        matchLabels:
          run: np-test-1
      policyTypes:
      - Ingress
      ingress:
      - ports:
        - protocol: TCP
          port: 80
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 6
- *info_outline*Question
    
    Taint the worker node `node01` to be Unschedulable. Once done, create a pod called `dev-redis`, image `redis:alpine`, to ensure workloads are not scheduled to this worker node. Finally, create a new pod called `prod-redis` and image: `redis:alpine` with toleration to be scheduled on `node01`.
    
    key: `env_type`, value: `production`, operator: `Equal` and effect: `NoSchedule`
    
- *info_outline*Solution
    
    To add taints on the `node01` worker node:
    
    ```
    kubectl taint node node01 env_type=production:NoSchedule
    ```
    
    Now, deploy `dev-redis` pod and to ensure that workloads are not scheduled to this `node01` worker node.
    
    ```
    kubectl run dev-redis --image=redis:alpine
    ```
    
    To view the node name of recently deployed pod:
    
    ```
    kubectl get pods -o wide
    ```
    
    Solution manifest file to deploy new pod called `prod-redis` with toleration to be scheduled on `node01` worker node.
    
    ```
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: prod-redis
    spec:
      containers:
      - name: prod-redis
        image: redis:alpine
      tolerations:
      - effect: NoSchedule
        key: env_type
        operator: Equal
        value: production
    ```
    
    To view only `prod-redis` pod with less details:
    
    ```
    kubectl get pods -o wide | grep prod-redis
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 7
- *info_outline*Question
    
    Create a pod called `hr-pod` in `hr` namespace belonging to the `production` environment and `frontend` tier .
    
    image: `redis:alpine`
    
    Use appropriate labels and create all the required objects if it does not exist in the system already.
    
- *info_outline*Solution
    
    Create a namespace if it doesn't exist:
    
    ```
    kubectl create namespace hr
    ```
    
    and then create a `hr-pod` with given details:
    
    ```
    kubectl run hr-pod --image=redis:alpine --namespace=hr --labels=environment=production,tier=frontend
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 8
- *info_outline*Question
    
    A kubeconfig file called `super.kubeconfig` has been created under `/root/CKA`. There is something wrong with the configuration. Troubleshoot and fix it.
    
- *info_outline*Solution
    
    Verify host and port for `kube-apiserver` are correct.
    
    Open the `super.kubeconfig` in vi editor.
    
    Change the 9999 port to 6443 and run the below command to verify:
    
    ```
    kubectl cluster-info --kubeconfig=/root/CKA/super.kubeconfig
    ```
    
**CheckCompleteIncomplete**
- *format_list_bulleted*Details
Q. 9
- *info_outline*Question
    
    We have created a new deployment called `nginx-deploy`. scale the deployment to 3 replicas. Has the replica's increased? Troubleshoot the issue and fix it.
    
- *info_outline*Solution
    
    Use the command `kubectl scale` to increase the replica count to 3.
    
    ```
    kubectl scale deploy nginx-deploy --replicas=3
    ```
    
    The `controller-manager` is responsible for scaling up pods of a replicaset. If you inspect the control plane components in the `kube-system` namespace, you will see that the `controller-manager` is not running.
    
    ```
    kubectl get pods -n kube-system
    ```
    
    The command running inside the `controller-manager` pod is incorrect.
    
    After fix all the values in the file and wait for `controller-manager` pod to restart.
    
    Alternatively, you can run `sed` command to change all values at once:
    
    ```
    sed -i 's/kube-contro1ler-manager/kube-controller-manager/g' /etc/kubernetes/manifests/kube-controller-manager.yaml
    ```
    
    This will fix the issues in `controller-manager` yaml file.
    
    At last, inspect the deployment by using below command:
    
    ```
    kubectl get deploy
    ```			
					 
								





