云原生|kubernetes|CKA真题解析-------(6-10题)

news2025/1/23 21:15:58

第六题:

service配置

 解析:

考察两个知识点:

deployment控制器内的port命名

暴露一个pod内的端口到新建的服务内的

这里有一个需要注意的地方,没有告诉你deployment控制器在哪个namespace。假设这个front-end这个pod是在A这个namespace内,那么,service创建的时候也必须是在A这个namespace里,否则,service无法正常工作。

这也算是这道题目的一个小陷阱。

解题:

1,查询deployment

root@k8s-master:~# kubectl get deployments.apps -A
NAMESPACE      NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
default        front-end                 1/1     1            1           359d
default        guestbook                 6/6     6            6           359d
default        nfs-client-provisioner    1/1     1            1           359d

2,编辑front-end,给端口命名为http,修改的内容是这些,修改完毕后保存退出:

       ports:
        - containerPort: 80
          name: http
          protocol: TCP

3,新增type为NodePort的service:

这里的target-port要引用上面创建的端口,名称为http

root@k8s-master:~# kubectl expose deployment front-end --type=NodePort --target-port=http --port=80 --dry-run=client -oyaml >6.yaml

 修改6.yaml文件,将service名字修改成符合题目要求的名字

4,测试

查看新建的service

root@k8s-master:~# kubectl get svc 
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
front-end-svc   NodePort    10.97.221.101   <none>        80:32678/TCP   5s
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP        375d


curl 这个service 节点IP+332678,如果出现200,表示service正常:

root@k8s-master:~# curl -i 192.168.123.150:32678
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Sun, 18 Dec 2022 09:33:59 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 28 Dec 2021 15:28:38 GMT
Connection: keep-alive
ETag: "61cb2d26-267"
Accept-Ranges: bytes

第七题:

解析:

这道题有两种解法,第一种是在官网找示例修改,第二种是命令行方式直接创建ingress,只是需要注意最后要测试创建的ingress是否正确。

第一种方式:

在官网找ingress的示例,官网地址如下:

Ingress | Kubernetes

第一个示例就可以符合题意:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx-example
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 80

修改成如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ping
  namespace: ing-internal
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - pathType: Prefix
        path: /hello
        backend:
          service:
            name: hello
            port:
              number: 5678

测试:

查看ingress代理的service结果是什么:

root@k8s-master:~# kubectl get svc -A
NAMESPACE       NAME                                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default         front-end-svc                        NodePort    10.97.221.101    <none>        80:32678/TCP                 92m
default         kubernetes                           ClusterIP   10.96.0.1        <none>        443/TCP                      375d
ing-internal    hello                                ClusterIP   10.106.182.229   <none>        5678/TCP                     360d
root@k8s-master:~# curl 10.106.182.229:5678
hello

查看ingress代理的结果,如果输出都一样,表明ingress是正确的:

root@k8s-master:~# kubectl get ing -A
NAMESPACE      NAME   CLASS   HOSTS   ADDRESS                                           PORTS   AGE
ing-internal   ping   nginx   *       192.168.123.150,192.168.123.151,192.168.123.152   80      3d20h
root@k8s-master:~# curl 192.168.123.150/hello
hello

第二种方式----命令行直接生成:

生成模板文件

ping是ingress的名字,hello:5678 是service的名称和端口

kubectl create ingress -n ing-internal ping --rule=/hello=hello:5678 --annotation=nginx.ingress.kubernetes.io/rewrite-target=/ --dry-run=client -oyaml >7.yaml

查看模板文件:

root@k8s-master:~# cat 7.yaml 
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  creationTimestamp: null
  name: ping
  namespace: ing-internal
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: hello
            port:
              number: 5678
        path: /hello
        pathType: Exact
status:
  loadBalancer: {}

应用模板文件并进行测试:

kubectl apply -f 7.yaml

需要等待一段时间,直到查询出的ingress绑定有节点的IP后:

root@k8s-master:~# kubectl get ing -A
NAMESPACE      NAME   CLASS    HOSTS   ADDRESS                                           PORTS   AGE
ing-internal   ping   <none>   *       192.168.123.150,192.168.123.151,192.168.123.152   80      104s

最终测试:

root@k8s-master:~# curl 192.168.123.150/hello
hello

第八题:

解析:这个题确实是送分题,没什么好说的。照做即可。

第九题:

解析:

这个题也是送分题,两步即可完成。

·1,查看节点的标签 是否有disk=ssd,没有则挑选一个节点打上这个标签

root@k8s-master:~# kubectl get no --show-labels 
NAME         STATUS   ROLES                  AGE     VERSION    LABELS
k8s-master   Ready    control-plane,master   375d    v1.22.10   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
k8s-node1    Ready    <none>                 5d20h   v1.22.2    beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux
k8s-node2    Ready    <none>                 5d20h   v1.22.2    beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux

节点没有这个标签,因此,随便选择一个节点,本例选择node2节点,打 disk=ssd这个标签

root@k8s-master:~# kubectl label no k8s-node2 disk=ssd
node/k8s-node2 labeled

      确认标签是否正确:

root@k8s-master:~# kubectl get no --show-labels  |grep ssd
k8s-node2    Ready    <none>                 5d20h   v1.22.2    beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node2,kubernetes.io/os=linux

2,按照题意生成模板文件,给模板文件添加nodeSelector 

生成模板文件:

kubectl run nginx-kusc0041 --image=nginx --dry-run=client -oyaml >9.yaml

编辑模板文件,最后结果如下:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx-kusc0041
  name: nginx-kusc0041
spec:
  containers:
  - image: nginx
    name: nginx-kusc0041
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
  nodeSelector:
    disk: ssd
status: {}

执行模板文件并验证是否正确调度到了k8s-node2节点:

root@k8s-master:~# kubectl apply -f 9.yaml 
pod/nginx-kusc0041 created
root@k8s-master:~# kubectl get po nginx-kusc0041  -owide
NAME             READY   STATUS    RESTARTS   AGE     IP               NODE        NOMINATED NODE   READINESS GATES
nginx-kusc0041   1/1     Running   0          2m39s   10.244.169.149   k8s-node2   <none>           <none>

第十题:

 这个题也是送分题,没什么好说的,直接就看出来的:

root@k8s-master:~# kubectl describe nodes  |grep -i Taint |grep -iv NoScheduole
Taints:             node-role.kubernetes.io/master:NoSchedule
Taints:             <none>
Taints:             <none>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端CSS Flex布局8大重难点知识,收藏起来吧

2009年&#xff0c;W3C提出了一种新的方案—-Flex布局&#xff0c;可以简便、完整、响应式地实现各种页面布局。目前&#xff0c;它已经得到了所有浏览器的支持&#xff0c;这意味着&#xff0c;现在就能很安全地使用这项功能。 Flex布局将成为未来布局的首选方案。这也是学习前…

Spring之底层架构核心概念-BeanDefinition

目录1.什么是BeanDefinition&#xff1f;2.如何生成BeanDefinition?2.1. Component2.1. bean标签2.3. Bean注解2.4. AbstractBeanDefinition2.5. 利用BeanDefinition 读取器-解析类2.6. XmlBeanDefinitionReader - 解析 xml文件2.7. ClassPathBeanDefinitionScanner 扫描生成 …

2022年度回顾 | 技术篇:突破公链不可能三角的努力

2022年接近尾声&#xff0c;驻足回看行业这一年的跌宕起伏&#xff0c;无论是技术的突破&#xff0c;应用的创新&#xff0c;还是生态的兴衰&#xff0c;皆成为了行业发展的历史注脚。如往年一样&#xff0c;万向区块链于年末推出重磅年度回顾系列文章&#xff1a;《公链技术篇…

一款免费的开源的 Switch 模拟器,支持超过3200款游戏

一款免费的开源的 Switch 模拟器&#xff0c;支持超过3200款游戏。 Ryujinx是一个开源的任天堂Switch模拟器&#xff0c;由gdkchan创建&#xff0c;用C#编写。该模拟器旨在提供卓越的准确性和性能、用户友好的界面和一致的构建。它是从头开始编写的&#xff0c;于2017年9月开始…

深度学习——锚框(笔记)

1.锚框的解释 目标检测算法中&#xff0c;通常会在输入图像中采样大量区域&#xff0c;然后判断这些区域是否包含所感兴趣的目标&#xff0c;并调整区域边界从而更加准确的预测目标真实的边缘框。 ①一类目标检测算法是基于锚框的 ②提出多个框被称为锚框的区域&#xff08;…

GIS开发入坑(三)--QGIS制作行政区划及背景图层

QGIS&#xff0c;功能强大的GIS工具&#xff0c;地理信息开发中的必备神器&#xff0c;今天以南京市为例制作行政区划并使用电子地图为数字底图进行呈现。 1.获取行政区划数据 阿里云的可视化平台提供了便捷的中国行政区划数据获取方式&#xff0c;数据层级最小到区县级。 htt…

游戏视频录制用什么软件?这2款软件,用过都说好

小编相信很多朋友在游戏中都有精彩的操作。有些朋友想和朋友分享他们在游戏中的精彩操作&#xff0c;但他们不知道有什么容易使用的免费游戏视频录制软件&#xff0c;可以记录他们在游戏中的亮眼表现。那么&#xff0c;哪个电脑游戏视频录制软件容易使用和免费呢&#xff1f;接…

【树莓派不吃灰】兄弟连篇⑤ 服务管理

目录1、服务分类2、rpm安装服务&#xff08;旧版本系统&#xff09;3、源码包安装&#xff08;旧版本系统&#xff09;❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-12-20 ❤️❤️ 本篇更新记录 2022-12-20 ❤️&#x1f3…

环境多介质逸度模型实践技术与典型案例【代码】应用

随着污染物在各种环境中的迁移和转化&#xff0c;多介质污染物模型日益受到关注。在各类多介质模型中&#xff0c;基于逸度概念的逸度模型由于运用范围广&#xff0c;建模数据要求较低而广受欢迎。 【原文链接】&#xff1a; 环境多介质逸度模型实践技术与典型案例【代码】应用…

《集体智慧编程》笔记(4 / 12):搜索与排名

由于书本未提供数据文件且提供的链接无法被链接且pysqlite安装失败&#xff0c;所以本章只是阅读学习。 文章目录搜索引擎的组成一个简单的爬虫程序使用urllib2爬虫程序的代码建立索引建立数据库Schema在网页中查找单词加入索引查询基于内容的排名归一化函数单词频度文档位置单…

JAVA面试(关于技术深耕方向和职业规划)

人的精力有限&#xff0c;制定清晰明确的技术发展方向&#xff0c;会使自己少走很多弯路。经过快10年的工作&#xff0c;我现在主要给自己在技术上定了这几个方向。 1、专注JAVA开发。 2、专注JAVA架构。 3、专注JAVA项目运维。 4、专注数字化业务项目。 5、专注JAVA项目的…

Springboot事件监听+@Async注解

文章目录一、不求甚解二、人云亦云三、刨根问底四、曲突徙薪一、不求甚解 在开发中经常可以利用Spring事件监听来实现观察者模式&#xff0c;进行一些非事务性的操作&#xff0c;如记录日志之类的。 Controller Controller中注入ApplicationEventPublisher&#xff0c;并利用…

内科大软件工程导论复习内容笔记

文章目录一、 概念&#xff08;共60分&#xff0c;单选题、多选题&#xff09;1. 软件是程序、数据、文档的集合。2. 软件的分类&#xff08;按规模、性质分&#xff09;3. 软件危机的表现、缓解软件危机的途径4. 软件工程方法学主要有两种&#xff1a;结构化的软件工程方法学_…

借助 Material Design,帮助您打造更好的无障碍应用 (上篇)

随着时代的发展&#xff0c;"无障碍体验" 对开发者的意义也愈发重大。我们准备了无障碍设计文章&#xff0c;帮助您为更多用户打造精彩应用。本文是第一篇内容&#xff0c;将为您介绍辅助技术&#xff0c;层次结构&#xff0c;颜色和对比度等内容。了解无障碍改进产品…

[前端攻坚]:Set的使用

总结一些日常需要用到的一些api&#xff0c;也是在一些面试中会经常出现的题目&#xff0c;今天分享的是Set的一些用法和个人的一些理解&#xff0c; 同时文章也被收录到我的《JS基础》专栏中&#xff0c;欢迎大家点击收藏加关注。 我们知道Set是一种叫做集合的数据结构&#x…

手把手教你成为荣耀开发者:如何获取平台帮助及最新通知?

荣耀开发者服务平台是荣耀面向开发者的统一生态入口&#xff0c;通过聚合周边内外部系统&#xff0c;分全球多站点部署&#xff0c;为全球开发者提供业务全生命周期的商业支撑服务&#xff0c;拥有应用分发、智慧服务、开放能力、HONOR Connect等众多业务等您来合作。 在与荣耀…

引擎入门 | Unity UI简介–第3部分(2)

本期我们继续为大家进行【Unity UI简介–第3部分】的后续教程 学习内容 4.添加遮挡面板 5.添加内容面板 6.添加按钮 文章末尾可免费获取教程源代码 本篇【Unity UI简介–第3部分】篇幅较长&#xff0c;分为八篇&#xff0c;本篇为第二篇&#xff0c;还未看过第一篇的请点…

Linux学习-89-JDK下载安装(rpm方式)

17.19 JDK下载安装&#xff08;rpm方式&#xff09; linux系统上jdk安装方式比较多&#xff0c;最简单的便是yum安装&#xff0c;可以使用以下步骤来安装&#xff1a; #首先先检查是否已经安装JDK [rootCncLucZK ~]# rpm -qa |grep java[rootCncLucZK ~]# rpm -qa |grep jdk …

Docker ( 三 ) 安装 MySQL

6.2.安装 MySQL 6.2.1.拉取镜像 6.2.1.1.搜索查看可用的mysql镜像 docker search mysql6.2.1.2.拉取最新版本的mysql镜像 docker pull mysql:latest6.2.1.3.查看镜像是否已经有mysql docker images|grep mysql6.2.2.启动容器 6.2.2.1.启动容器实例 启动同时设置名字以及r…

搜遍全网,终于找到了报表自动化的最佳工具,比Excel好用10倍

工作快十年了&#xff0c;最开始是在华为做报表&#xff0c;后来去了美团从事大数据和平台方面的工作&#xff0c;现在在国企干了快三年。辗转各大企业的IT部门&#xff0c;最明显的感知就是企业间数字化程度差距太大了。就从报表这个点来说&#xff0c;互联网公司早就实现了报…