CKA考试真题答案

k8s管理员认证考试题目答案(cka)

1、rbac授权
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets 
kubectl  create serviceaccount cicd-token -n app-team1 
kubectl create rolebinding cicd-token --serviceaccount=app-team1:cicd-token   --clusterrole=deplyment-clusterrole   -n app-team1

2、设置节点不可用
kubectl cordon ek8s-node-1
kubectl drain ek8s-node-1 --ignore-daemonsets

3、升级k8s版本
kubectl cordon mk8s-master-0
kubectl drain mk8s-master-0  --ignore-daemonsets
ssh mk8s-master-0
sudo -i
apt install kubeadm=1.20.1-00 -y
kubeadm upgrade plan
kubeadm upgrade apply v1.20.1 --etcd-upgrade=false
apt install kubectl=1.20.1-00 kubelet=1.20.1-00 -y 
systemctl daemon-reload
systemctl restart kebelet
kubectl uncordon mk8s-master-0

4、etcd备份与恢复
exit
ETCDCTL_API=3 etcdctl snapshot save /data/backup/etcd-snapshot.db --endpoints=https://127.0.0.1:2379 --cacert=/opt/ca.crt --cert=/opt/cert.crt  --key=etcd.key
mv /etc/kubernetes/manifests/ /etc/kubernetes/manifests.bak
mv /var/lib/etcd /var/lib/etcd.bak
ETCDCTL_API=3 etcdctl --data-dir=/var/lib/etcd snapshot restore /data/backup/etcd-snapshot-previous.db
mv /etc/kubernetes/manifests.bak  /etc/kubernetes/manifests


5、网络策略
kubectl  get ns --show-labels
kubectl label namespace my-app project=my-app
kubectl label namespace big-corp project=big-corp

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-from-namespace
  namespace: my-app
spec:
  podSelector: {}
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - from:
        - namespaceSelector:
            matchLabels:
              project: my-app
      ports:
        - protocol: TCP
          port: 8080
  egress:
    - to:
        - namespaceSelector:
            matchLabels:
              project: big-corp
      ports:
        - protocol: TCP
          port: 8080
          
          
          
6、SVC暴露应用
kubectl edit deployment front-end

 containers:
 - image: nginx
 imagePullPolicy: Always
 name: nginx
 ports:
   - name: https
     protocol: TCP
     containerPort: 80
     
kubectl  expose deployment front-end  --port=80 --target-port=80 --type=NodePort --name=front-end-svc

7、ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: pong
  namespace=ing-internal
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /hello
        pathType: Prefix
        backend:
          service:
            name: hello
            port:
              number: 5678
              
8、扩容pod数量
kubectl scale deployment loadbalacer --replicas=5

9、nodeSelector
apiVersion: v1
kind: Pod
metadata:
  name: nginx-kusc00401
spec:
  containers:
  - name: nginx
    image: nginx
  nodeSelector:
    disk: ssd
    
10、统计准备就绪节点数量
kubectl  get node|grep Ready |grep -v master |grep -v NoSchedule |wc -l > /opt/123.txt

11、pod配置多容器
apiVersion: v1
kind: Pod
metadata:
  name: kucc4
spec:
  containers:
  - name: redis
    image: redis
  - name: memcached
    image: memcached
    
12、创建pv
apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-data
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/svc/app-data"
    
13、pod使用pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-volume
spec:
  storageClassName: csi-hostpath-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Mi
      
apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: pv-volume
  containers:
    - name: task-pv-container
      image: nginx
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: data
          
kubectl edit pvc pv-volume --save-config


14、获取pod错误日志
kubectl logs bar |grep unable-to-access-website > /opt/KUTR00101/bar

15、给pod增加一个容器
kubectl get pod big-corp-app -o yaml > big-corp-app.yaml
kubectl delete -f big-corp-app.yaml
vi big-corp-app.yaml

apiVersion: v1
kind: Pod
metadata:
  name: big-corp-app
spec:
  containers:
  - name: big-corp-app
    image: busybox:1.28
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done      
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: sidecar
    image: busybox
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/big-corp-app.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}
    
kubectl apply -f big-corp-app.yaml

16、统计使用cpu最高的pod
kubectl top pod -l name=overloaded-cpu --sort-by="cpu" -A

17、节点notready处理
ssh wk8s-node-0
sudo -i
systemctl status kubelet
systemctl start kubelet
systemctl enable kubelet

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波浪理论~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值