首页 > 其他分享 >cka认证考题复习

cka认证考题复习

时间:2023-09-18 22:45:17浏览次数:37  
标签:web cka 复习 kubectl app nginx 考题 pod name

1、新建命名空间,在该命名空间中创建一个pod

• 命名空间名称:cka

• pod名称:pod-01

• 镜像:nginx

命令行配置:
kubectl create namespace cka
kubectl run pod-01 --image=nginx --namespace=cka

yaml配置: apiVersion: v1 kind: Pod metadata: name: pod-01 namespace:cka spec: containers: - name: nginx image: nginx
配置生效:
kubectl apply -f pod.yaml Kueclt get namespace
https://kubernetes.io/zh/docs/concepts/workloads/pods/ 

 

2、创建一个deployment并暴露service

• 名称:aliang-666

• 镜像:nginx

命令行配置:
kubectl create deployment aliang-666  --image=nginx
kubectl expose deployment  aliang-666 --port=80  --target-port=80
 
yaml配置:
1、先手动创建deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aliang-666
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

2、创建Service,将应用80端口暴露,容器和pod都使用80端口暴露 apiVersion: v1 kind: Service metadata: name: aliang-666 spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80
https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/

 

 3、列出命名空间下指定标签pod

• 命名空间名称:kube-system

• 标签:k8s-app=kube-dns 

kubectl get  nodes  -l  k8s-app=kube-dns   -namespace=kube-system
kubectl get  nodes  -l  k8s-app=kube-dns   -n kube-system  #-namespace命名空间可以简写为-ns或-n
kubectl get nodes --show-labels    #查看标签 

 

4、查看pod日志,并将日志中Error的行记录到指定文件

• pod名称:web

• 文件:/opt/web-log 

kubectl  logs web | grep  -i  Error  >opt/web-log  #-i命令可以忽略大小写
kubectl  logs web  #查看指定pod的日志
kubectl  logs web  --help  #查看帮助信息,可以快速查看命令格式

 

5、查看指定标签使用cpu最高的pod,并记录到到指定文件

• 标签:app=web

• 文件:/opt/cpu 

分析:查看资源使用情况,支持通过cpu和memory占用资源大小进行排序
kubectl top pods -l app=web --sort-by="cpu" >/opt/cpu kubectl top pods -l app-web --sort-by="memory"  >/tmp/larry #根据内存使用大小排序

 

6、在节点上配置kubelet托管启动一个pod

• 节点:k8s-node1

• pod名称:web

• 镜像:nginx 

6.1、分析:观察配置文件有没有启用静态Pod,kubeadmin默认没有启用静态pod,需手动加上,然后重启kubelet进行生效。
ssh  k8s-node1               #登录node1
ps -ef | grep kubelet  #找到静态pod使用哪个yaml文件,修改后重启kubelet,--config=/var/lib/kubelet/config.yaml 
vi  /var/lib/kubelet/config.yaml    #增加以下这一行,并重启kubelet
staticPodPath:/etc/kubernetes/manifests
Systemctl restart kubelet

6.2、vi /etc/kubernetes/manifests/web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: web
  namespace:
  labels:
     app:
spec:
    spec:
      containers:
      - name: nginx
        image: nginx 
https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/

 

7、向pod中添加一个init容器,init容器创建一个空文件,如果该空文件没有被检测到,则pod退出

• pod名称:web

分析:在initContainers容器中创建1个空文件,用普通容器中的livenessProbe来做健康检查,另外需要注意k8s中容器是相互隔离的,我们可以使用数据卷共享的方式来共享文件,这也是容器间互相访问的一种方式。
apiVersion: v1 kind: Pod metadata: name: web labels: app: nginx spec: containers: - name: nginx image: nginx command: ['sh', '-c', 'echo The app is running! && sleep 3600'] volumeMounts: - mountPath: /opt name:data livenessProbe: exec: command: - cat - /opt/test restartPolicy:Always initContainers: - name: nginx image: nginx command: ['sh', '-c', "touch /tmp/test"] volumeMounts: - mountPath: /opt name: data volumes: - name: data emptyDir:{}
Kubectl describe pods web  #检查是否正常 Kubectl get pods         #查看pods信息 Kubectl delete -f pod.yaml   #删除配置
https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/init-containers/

 

8、创建一个deployment 副本数 3,然后滚动更新镜像

版本,并记录这个更新记录,最后再回滚到上一个版本

• 名称:nginx

• 镜像版本:1.16

• 更新镜像版本:1.17

kubectl create deployment  web  --image=nginx
kubectl  scale deploy web --replicas=3
kubectl set image deploy web nginx=nginx:1.17   --recored
kubectl rollout undo deployment web --to-revision=1    #回滚到上一个版本

辅助命令:
kubectl edit deploy web #直接编辑yaml文件增加副本数
kubectl rollout history deployment web #检查更新版本历史记录
kubect set image --help
kubectl rollout --help
Curl -I 192.168.1.10 #查看nginx版本。

 

9、给web deployment扩容副本数为3

Kubectl scale deployment  web  --replicas=3

 

10、创建一个pod,其中运行着nginx、redis、memcached、consul 4个容器

apiVersion: v1
kind: Pod
metadata:
  name: web
  namespace: web
  labels:
    app: web
spec:
  containers:
  - name: nginx
    image: nginx
  - name: redis
    image: redis
  - name: memcached
    image: memcached
  - name: consul 
    image: consul

kubectl  apply  -f  pod.yaml
kubectl get pods

 

11、把deployment输出json文件,再删除创建的Deployment

kubectl get deploy  web  -o   json  >/opt/test
kubectl delete deployment web

 

12、生成一个deployment yaml文件保存到/opt/deploy.yaml

• 名称:web

• 标签:app_env_stage=dev

分析:先命令行创建yaml文件,然后手动修改标签名,并应用生效
kubectl create deployment web --image=nginx --dry-run=client - o yaml >/opt/deploy.yaml 按照要求修改标签:
vi /opt/deploy.yaml #编辑yaml文件,主要是修改标签
kubectl apply -f   /opt/deploy.yaml    #应用yaml文件 apiVersion: apps/v1 kind: Deployment metadata: labels: app: app_env_stage=dev name: web spec: replicas: 1 selector: matchLabels: app: app_env_stage=dev template: metadata: labels: app: app_env_stage=dev spec: containers: - image: nginx name: nginx

 

13、创建一个pod,分配到指定标签node上

• pod名称:web

• 镜像:nginx

• node标签:disk=ssd

分析:需要用到标签选择器,可以将特定的pod分配到指定的node上,一般在做功能测试,poc方案可行性分析的场景下,使用nodeSelector选择器,可以减低对生产业务环境的影响。
vi pod.yaml apiVersion: v1 kind: Pod metadata: name: web spec: containers: - name: web image: nginx nodeSelector: disk: ssd https://kubernetes.io/docs/concepts/configuration/assign-pod-node

 

14、确保在每个节点上运行一个pod,不考虑污点

• 名称:fluentd-elasticsearch

• 镜像:fluentd

分析:官网yaml配置,默认有污点配置,需要手动删除 ,每个节点都运行pod,可以快速联想到使用daemonset方式部署
Vi ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
       #考试中提到没有污点,因此需要手动删除tolerations的以下配置【蓝色部分】,其他的标签根据题意进行修改
   #污点简单来说,就是人为干预,使该pod上不运行特定的应用 tolerations: # 这些容忍度设置是为了让该守护进程集在控制平面节点上运行 # 如果你不希望自己的控制平面节点运行 Pod,可以删除它们 - key: node-role.kubernetes.io/control-plane operator: Exists effect: NoSchedule - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule containers: - name: fluentd-elasticsearch image: fluentd resources: limits: memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log terminationGracePeriodSeconds: 30 volumes: - name: varlog hostPath: path: /var/log https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/

 

15、查看集群中状态为ready的node数量(不包含污点类型为NoSchedule的node),并将结果写到指定文件

kubectl get node | grep Ready | wc -l   #统计进入Ready状态的node数量
kubectl get node | grep -ic Ready     #查看状态为ready的node数量
kubectl describe node |grep Taint |grep -c NoSchedule   >/opt/larry  #查看状态为ready的node数量,不包含污点类型为NoSchedule的node 

标签:web,cka,复习,kubectl,app,nginx,考题,pod,name
From: https://www.cnblogs.com/larry-luo/p/17708200.html

相关文章

  • 复习课7 常量
    一.导入我们之前就说过生活中是有很多变化与不变的量的,我们将变化的量称为变量,将不变的量称为常量常量在生活中也有很多,如:血型、性别(不考虑特殊情况)、身份证号,那么在C语言中有哪些常量呢?二.C语言中常量的分类字面常量const修饰的常变量#define定义的标识符常量枚举常量接下来我将为......
  • 软件工程 之 (XMUT)Java期末复习题及答案2
    {calloutcolor="#f0ad4e"}软件工程实用案例教程https://www.ivanky.cn/XMUTRG/304.htmlJava期末复习题及答案https://www.ivanky.cn/XMUTRG/361.html计算机网络复习题库https://www.ivanky.cn/XMUTRG/405.html(XMUT)Java期末复习题及答案选择题{collapse}{collapse-i......
  • 软件工程 之 (XMUT)计算机网络复习题库
    {calloutcolor="#f0ad4e"}软件工程实用案例教程https://www.ivanky.cn/XMUTRG/304.htmlJava期末复习题及答案https://www.ivanky.cn/XMUTRG/361.html计算机网络复习题库https://www.ivanky.cn/XMUTRG/405.html计算机网络复习题库考试酷--自测习题{collapse}{/......
  • python复习
    一python简介#主流语言的区别c:c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译java:一处编码,处处运行,java是编译型还是解释型?编译型,编译过程---把java源代码编译成字节码文件.class---不能直接运行在操作系统上---》jvm(java虚拟机),jvm运行至少要300M内存jdk......
  • 2023年了,复习了一下spring boot配置使用mongodb
    前言MongoDB是一个基于分布式文件存储的开源数据库系统,使用C++语言编写。它是一个介于关系数据库和非关系数据库之间的产品,具有类似关系数据库的功能,但又有一些非关系数据库的特点。MongoDB的数据模型比较松散,采用类似json的bson格式,可以灵活地存储各种类型的数据MongoDB的优......
  • 复习课6 变量的作用域与生命周期
    一.导入我们之前讲了局部变量与全局变量的区别,而作用域其实变量在程序的哪一段代码中能起到作用,哪里不能起到作用的一个概念,所以我们在讲作用域的时候很大一部分都是与上一篇文章相关的,所以如果没有看过上一篇文章建议先回看,那我们正式开始!二.作用域(局部变量)我们先来看一段简单的代......
  • 复习C语言-题目 1008: [编程入门]成绩评定
    题目描述给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以及90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。输入格式一个整数0-100以内输出格式一个字符,表示成绩等级样例输入复制90样例输出复制A1#inclu......
  • 复习C语言-题目 1009: [编程入门]数字的处理与判断
    题目描述给出一个不多于5位的整数,要求1、求出它是几位数2、分别输出每一位数字3、按逆序输出各位数字,例如原数为321,应输出123输入格式一个不大于5位的数字输出格式三行第一行位数第二行用空格分开的每个数字,注意最后一个数字后没有空格第三行按逆序输出......
  • Linux与Shell编程期末复习
    Linux中各类特殊变量的含义$#是传给脚本的参数个数$0是脚本本身的名字$1是传递给该shell脚本的第一个参数$2是传递给该shell脚本的第二个参数$@是传给脚本的所有参数的列表$*是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$是脚本运行的当前......
  • 复习课5 遍写一个简单的求和程序
    一.导入上节课我们介绍了变量、常量、局部变量、全局变量的特性,接下来就让我们来编写一个简单的求和程序二.程序要求,程序需要有三个整型变量:num1num2sum,最后的求出的和保存在变量sum中,最后输出sum的值给用户(注:num1与num2数值自定)三.分析程序我们看题目就可以知道我们需要先创建......