CKA场景题

CKA

权限控制

需求

创建名称 deployment-clusterrole 的 ClusterRole,该⻆⾊具备创建 Deployment、Statefulset、 Daemonset 的权限,在命名空间 app-team1 中创建名称为 cicd-token 的 ServiceAccount,绑定 ClusterRole 到 ServiceAccount,且限定命名空间为 app-team1。

#创建命名空间app-team1
root@k8s-master:~# kubectl create ns app-team1
#查看命名空间
root@k8s-master:~# kubectl get ns
NAME              STATUS   AGE
app-team1         Active   659d
default           Active   675d
fubar             Active   659d
ing-internal      Active   659d
ingress-nginx     Active   659d
kube-node-lease   Active   675d
kube-public       Active   675d
kube-system       Active   675d
my-app            Active   659d
#在命名空间 app-team1 中创建名称为 cicd-token 的 ServiceAccount
root@k8s-master:~# kubectl create serviceaccount cicd-token -n app-team1
serviceaccount/cicd-token created
#创建名称 deployment-clusterrole 的 ClusterRole,该⻆⾊具备创建 Deployment、Statefulset、 Daemonset 的权限
root@k8s-master:~# kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
clusterrole.rbac.authorization.k8s.io/deployment-clusterrole created
#绑定 ClusterRole 到 ServiceAccount,且限定命名空间为 app-team1。
root@k8s-master:~# kubectl -n app-team1 create rolebinding cicd-clusterrole --clusterrole=deployment-clusterrole --serviceaccount=app1-team:cicd-token
rolebinding.rbac.authorization.k8s.io/cicd-clusterrole created

官方网址

设置节点不可用

需求:

设置 k8s-node1 节点为不可⽤、重新调度该节点上的所有 pod

#禁用该节点
root@k8s-master:~# kubectl cordon k8s-node1
#清空节点
root@k8s-master:~# kubectl drain k8s-node1 --ignore-daemonsets --delete-emptydir-data --force
root@k8s-master:~# kubectl get nodes
NAME         STATUS                     ROLES                  AGE    VERSION
k8s-master   Ready                      control-plane,master   675d   v1.22.0
k8s-node1    Ready,SchedulingDisabled   <none>                 675d   v1.22.0
k8s-node2    Ready                      <none>                 675d   v1.22.0

安全地清空一个节点 | Kubernetes

升级 kubeadm

需求:

升级 master 节点为1.22.2,升级前确保drain master 节点,不要升级worker node 、容器 manager、 etcd、 CNI插件、DNS 等内容;(⾸先 cordon、drain master节点,其次升级 kubeadm 并 apply 到1.22.2版本,升级 kubelet 和 kubectl)

root@k8s-master:~# kubectl cordon k8s-master
root@k8s-master:~# kubectl drain k8s-master --ignore-daemonsets --force
root@k8s-master:~# apt-mark unhold kubelet kubectl kubeadm && \
> apt-get update && apt-get install -y kubelet='1.22.2-00' kubectl='1.22.2-00' kubeadm='1.22.2-00'&& \
> apt-mark hold kubelet kubectl kubeadmkubeadm upgrade plan
kubeadm upgrade apply v1.22.2 --etcd-upgrade=false
sudo systemctl daemon-reload
sudo systemctl restart kubelet
root@k8s-master:~# kubectl uncordon k8s-master
node/k8s-master uncordoned
root@k8s-master:~# kubectl get node
NAME         STATUS                     ROLES                  AGE    VERSION
k8s-master   Ready                      control-plane,master   675d   v1.22.2
k8s-node1    Ready,SchedulingDisabled   <none>                 675d   v1.22.0
k8s-node2    Ready                      <none>                 675d   v1.22.0

官方文档

备份还原 etcd

需求:

备份 https://127.0.0.1:2379 上的 etcd 数据到 /var/lib/backup/etcd-snapshot.db,使⽤之前的⽂ 件 /data/backup/etcd-snapshot-previous.db 还原 etcd,使⽤指定的 ca.crt 、 etcd-client.crt 、 etcd-client.key

#备份
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \snapshot save /var/lib/backup/etcd-snapshot.db#恢复
ETCDCTL_API=3 etcdctl --endpoints https://127.0.0.1:2379 \--cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \snapshot restore /data/backup/etcd-snapshot-previous.db

官方文档

配置⽹络策略 NetworkPolicy

需求:

在命名空间 fubar 中创建⽹络策略 allow-port-from-namespace,只允许 ns my-app 中的 pod 连上 fubar 中 pod 的 80 端⼝,注意:这⾥有 2 个 ns ,⼀个为 fubar(⽬标pod的ns),另外⼀个为 my-app(访 问源pod的ns)

#查看命名空间
root@k8s-master:~# kubectl get ns --show-labels
NAME              STATUS   AGE    LABELS
app-team1         Active   660d   kubernetes.io/metadata.name=app-team1
default           Active   675d   kubernetes.io/metadata.name=default
fubar             Active   660d   kubernetes.io/metadata.name=fubar
ing-internal      Active   660d   kubernetes.io/metadata.name=ing-internal
ingress-nginx     Active   660d   app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx,kubernetes.io/metadata.name=ingress-nginx
kube-node-lease   Active   675d   kubernetes.io/metadata.name=kube-node-lease
kube-public       Active   675d   kubernetes.io/metadata.name=kube-public
kube-system       Active   675d   kubernetes.io/metadata.name=kube-system
my-app            Active   660d   kubernetes.io/metadata.name=my-app,name=my-app
#新建yml文件

networkPolicy.yml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-port-from-namespacenamespace: fubar
spec:podSelector:matchLabels: {}policyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:kubernetes.io/metadata.name: my-apppodSelector:matchLabels: {}ports:- protocol: TCPport: 80

官方文档

创建Service

需求:

重新配置已有的 deployment front-end,添加⼀个名称为 http 的端⼝,暴露80/TCP,创建名 称为 front-end-svc 的 service,暴露容器的 http 端⼝,配置service 的类别为NodePort

root@k8s-master:~# kubectl expose deployment front-end --type=NodePort --port=80 --target-port=80 --name=front-end-svc
service/front-end-svc exposed
root@k8s-master:~# kubectl get svc
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
front-end-svc   NodePort    10.109.251.245   <none>        80:31315/TCP   8s
kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP        677d
root@k8s-master:~# curl 10.109.251.245
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

官方文档

创建 Ingress 资源

需求:

创建⼀个新的 Ingress 资源,名称 ping,命名空间 ing-internal,使⽤ /hello 路径暴露服务 hello 的 5678 端⼝

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: pingnamespace: ing-internalannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- http:paths:- path: /hellopathType: Prefixbackend:service:name: helloport:number: 5678
root@k8s-master:~# kubectl get ingress,svc -n ing-internal
NAME                             CLASS    HOSTS   ADDRESS                           PORTS   AGE
ingress.networking.k8s.io/ping   <none>   *       192.168.123.151,192.168.123.152   80      56sNAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/hello   ClusterIP   10.106.182.229   <none>        5678/TCP   660d
root@k8s-master:~# curl 192.168.123.151/hello
hello

官方文档

扩容Deployment

需求:

扩容 deployment guestbook 为 6个pod

root@k8s-master:~# kubectl get deploy
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
front-end                1/1     1            1           660d
guestbook                2/2     2            2           660d
nfs-client-provisioner   1/1     1            1           660d
root@k8s-master:~# kubectl scale deployment --replicas=6 guestbook
deployment.apps/guestbook scaled

调度 pod 到指定节点

需求:

创建pod名称nginx-kusc0041,镜像nginx,调度该pod到disk=ssd的节点上

apiVersion: v1
kind: Pod
metadata:name: nginx-kusc0041
spec:containers:- name: nginximage: nginxnodeSelector:disk: ssd

官方文档

统计ready 状态节点数量

需求:

统计ready状态节点 要求不包括NoSchedule的节点( describe node过滤NoSchedule的节点,统计数量输⼊指定⽂档即可)

root@k8s-master:~# kubectl get nodes

官方文档

创建多容器Pod

需求:

创建名称为kucc1的pod,pod中运⾏nginx和redis两个容器

apiVersion: v1
kind: Pod
metadata:name: kucc1
spec:containers:- name: nginximage: nginx- name: redisimage: redis   

官方文档

创建PV

需求:

创建⼀个名为app-config的PV,PV的容量为2Gi,访问模式为ReadWriteMany,volume的类型 为hostPath,pv映射的hostPath为/srv/app-config⽬录

apiVersion: v1
kind: PersistentVolume
metadata:name: app-config
spec:capacity:storage: 2GiaccessModes:- ReadWriteManyhostPath:path: "/srv/app-config"
root@k8s-master:~# kubectl get pv
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
app-config   2Gi        RWX            Retain           Available                                   61s

配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

创建和使⽤PVC

需求:

使⽤指定storageclass csi-hostpath-sc创建⼀个名称为pv-volume的 pvc,容量为10Mi 创建名称为web-server的pod,将nginx 容器的/usr/share/nginx/html⽬录使⽤该pvc挂载 将上述pvc的⼤⼩从10Mi更新为70Mi,并记录本次变更;

  • 创建pvc pvc.yml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:name: pv-volume
    spec:storageClassName: csi-hostpath-scaccessModes:- ReadWriteOnceresources:requests:storage: 10Mi
    
  • 创建Pod pvc-pod.yml

    apiVersion: v1
    kind: Pod
    metadata:name: web-server
    spec:volumes:- name: mypvpersistentVolumeClaim:claimName: pv-volumecontainers:- name: nginximage: nginxvolumeMounts:- mountPath: "/usr/share/nginx/html"name: mypv
    
root@k8s-master:~# kubectl apply -f pvc.yml
persistentvolumeclaim/pv-volume created
root@k8s-master:~# kubectl apply -f pvc-pod.yml
pod/web-server created
#pvc的⼤⼩从10Mi更新为70Mi,并记录本次变更
root@k8s-master:~# kubectl edit pvc pv-volume --record

配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

监控pod的日志

需求:

监控foobar pod中的⽇志 获取包含unable-to-access-website的⽇志,并将⽇志写⼊到/opt/KUTR00101/foobar

kubectl logs foobar | grep unable-to-access-website >
/opt/KUTR00101/foobar

查看 cpu 使⽤率最⾼的 pod

需求:

查找label为name=cpu-loader的pod,筛选出cpu负载最⾼的那个pod,并将名称追加 到/opt/KUTR00401/KUTR00401.txt

root@k8s-master:~# kubectl top pod -l name=cpu-loader -A --sort-by='cpu'
NAMESPACE     NAME                                       CPU(cores)   MEMORY(bytes)
kube-system   kube-apiserver-k8s-master                  42m          328Mi
kube-system   calico-node-4l4ll                          23m          129Mi
kube-system   calico-node-q9h5n                          21m          129Mi
kube-system   calico-node-d8ct6                          18m          129Mi
kube-system   etcd-k8s-master                            11m          58Mi
kube-system   kube-controller-manager-k8s-master         11m          60Mi
kube-system   metrics-server-576fc6cd56-vwfkb            3m           28Mi
kube-system   coredns-7f6cbbb7b8-kzfsd                   2m           13Mi
kube-system   coredns-7f6cbbb7b8-h92ch                   2m           14Mi
kube-system   kube-scheduler-k8s-master                  2m           24Mi
kube-system   calico-kube-controllers-6b9fbfff44-xvqxg   2m           25Mi
kube-system   kube-proxy-9pq8z                           1m           30Mi
kube-system   kube-proxy-nqhpr                           1m           20Mi
kube-system   kube-proxy-pkz69                           1m           17Mi
root@k8s-master:~# echo kube-apiserver-k8s-master  >> /opt/KUTR00401/KUTR00401.txt

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

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

相关文章

大托,如何站上天心南部的价值高地?

作者 | 魏启扬 陈宇航 来源 | 洞见新研社 陈飞 摄 “商贾云集于四方&#xff0c;市井数盈于万户”&#xff0c;长沙南城古往今来生生不息的热辣与烟火&#xff0c;每隔一段时间&#xff0c;都会有璀璨的迸发。 才在“加长版”黄金周释放了“不夜南城”的魅力&#xff0c;第…

【Python学习笔记】字符串格式化

1. printf 风格 这种格式化语法 和 传统的C语言printf函数 一样 。 salary input(请输入薪资&#xff1a;)# 计算出缴税额&#xff0c;存入变量tax tax int(salary) *25/100 # 计算出税后工资&#xff0c;存入变量aftertax aftertax int(salary) *75/100 print(税前薪资&…

2023年浙大MEM考前80天上岸经验分享

时间过得真快&#xff0c;转眼间已经是十月份了。回想起去年这个时候&#xff0c;我还在为考研而感到焦虑不安。然而&#xff0c;如今我已经在浙大MEM项目学习了一个多月的时间了。在这一个月的学习过程中&#xff0c;我不仅学到了许多专业知识&#xff0c;还结识了很多志同道合…

小白学java--垃圾回收机制(Garbage Collection)

压测过程中&#xff0c;作为测试会时不时听到研发说命中gc了&#xff0c;如果一头雾水&#xff0c;来看看什么是gc。 1、什么是垃圾回收机制 垃圾回收的执行过程会导致一些额外的开销&#xff0c;例如扫描和标记对象、回收内存空间等操作。这些开销可能会导致一定的性能损失和…

QT计时器

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //计时器类 #include <QTime> //时间类 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widg…

10.20作业

#include “widget.h” #include “ui_widget.h” Widget::Widget(QWidget *parent) QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); t new QTimer(this); connect(t, &QTimer::timeout, this, &Widget::timeout_Slot); ui->text->setPlacehold…

microcom串口调试工具使用

microcom串口助手使用介绍 microcom是一个在终端中使用的串口助手&#xff0c;类似平常使用SSCOM一样的东西&#xff0c;不过是在终端中使用而已。 使用的是busybox构建的文件系统 microcom源码路径&#xff1a;busybox/miscutils/microcom.c microcom 参数&#xff1a; [r…

什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的 IE?

什么是响应式设计: 响应式设计&#xff08;Responsive Design&#xff09;是一种Web设计和开发方法&#xff0c;旨在使网站在不同设备和屏幕尺寸上都能提供一致的用户体验。响应式设计的目标是适应多种终端&#xff0c;包括桌面计算机、笔记本电脑、平板电脑和移动设备&#x…

编程题总结 --- 2018

&#xff08;1&#xff09;输入一串字符串&#xff0c;字符串以“#”结尾&#xff0c;判断输入的字符串中0至9的个数。 #include<iostream>using namespace std;int main(){int sum 0;string s;while(cin >> s){if(s "#") break;int n s.size();for(…

代码随想录算法训练营第二十八天 | LeetCode 491. 递增子序列、46. 全排列、47. 全排列 II

代码随想录算法训练营第二十八天 | LeetCode 491. 递增子序列、46. 全排列、47. 全排列 II 文章链接&#xff1a;递增子序列 全排列 全排列II 视频链接&#xff1a;递增子序列 全排列 全排列II 目录 代码随想录算法训练营第二十八天 | LeetCode 4…

ArrayDeque 源码解析(JDK1.8)

目录 一. 前言 二. 源码解析 2.1. 概览 2.2. 属性 2.3. 构造方法 2.4. 入队 2.4.1. addFirst(E, e) 2.4.2. add(E e) & addLast(E e) 2.4.3. offer(E e) 2.5. 扩容 2.6. 出队 2.6.1. poll() & pollFirst() 2.6.2. pollLast() 2.7. 删除元素 2.8. 获取元…

【学习笔记】RabbitMQ01:基础概念认识以及快速部署

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 一、认识RabbitMQ1.1 消息中间件&#xff08;MQ Message Queue 消息队列1.2 主流的消息中间件1.3 MQ的应用场景1.3.1 异步处理1.3.2 系统解耦1.3.3 流量削峰1.3.4 日志处理 二、RabbitMQ运行环境搭建…

驱动开发day2

任务&#xff1a;使用模块化编译安装驱动实现三盏LED灯的亮灭 驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h>#define PHY_RCC 0X50000A28 #define PH…

[论文笔记]GPT1

引言 今天带来论文Improving Language Understanding by Generative Pre-Training的笔记,它的中文题目为:通过生成式预训练改进语言理解。其实就是GPT的论文。 自然语言理解可以应用于大量NLP任务上,比如文本蕴含、问答、语义相似和文档分类。虽然无标签文本语料是丰富的,…

神经网络中的反向传播:综合指南

塔曼纳 一、说明 反向传播是人工神经网络 &#xff08;ANN&#xff09; 中用于训练深度学习模型的流行算法。它是一种监督学习技术&#xff0c;用于调整网络中神经元的权重&#xff0c;以最小化预测输出和实际输出之间的误差。 在神经网络中&#xff0c;反向传播是计算损失函数…

基于 Qt UDP通信局域网通信

前言 该例程经过实际验证可以正常使用,只简单的使用UDP中的单播模式(一对一), 所用测试系统在同一局域网,其中: QT版本:5.12 PC端UDP模式:单播 UDP通信目标:基于STM32F4+LWIP协议的以太网接口 调试助手: 虚拟串口+串口助手+UDP和TCP调试助手[编程人员必备]一、UDP通…

MySQL数据库下载与安装使用

文章目录 MySQL数据库下面是各个版本完整的生命周期。下载MySQL安装包安装和使用MySQL一些基础MySQL使用命令 MySQL数据库 这里我选择的是免安装绿色解压版本 现在各位开发者使用的MySQL&#xff0c;大部分版本都是 5.7&#xff0c;根据官方说明&#xff0c;MySQL 5.7 将于 202…

18.项目开发之前端项目搭建测试

项目开发之前端项目搭建测试 解压文件&#xff0c;将前端项目目录&#xff0c;拖拽到HBuilder中 前端项目QuantTrade_vue地址&#xff1a;传送门 后端项目QuantTrade地址&#xff1a; https://pan.baidu.com/s/1GF45B0QepApH8JbRIOLY7w?pwd1016 开启idea的项目&#xff0c;先…

智慧油气田方案:视频+AI识别,助力油气田生产与管理智能化转型

一、背景与挑战 根据《“十四五”能源领域科技创新规划》指出&#xff0c;要推动核心技术创新突破&#xff0c;推动煤炭、油田、电厂、电网等传统行业与数字化、智能化技术深度融合。我国油田产业已经摆脱了早期粗放式增长的阶段&#xff0c;需要更加精细化、智慧化、科学化的…

PyQt学习笔记-获取Hash值的小工具

目录 一、概述1.1 版本信息&#xff1a;1.2 基本信息&#xff1a;1.2.1 软件支持的内容&#xff1a;1.2.2 支持的编码格式 1.3 软件界面图 二、代码实现2.1 View2.2 Controller2.3 Model 三、测试示例 一、概述 本工具居于hashlibPyQtQFileDialog写的小工具&#xff0c;主要是…