地址1:https://pan.baidu.com/s/1eAgrPWfwwSklX7Z12yI1qQ 提取码: drmd
地址2:https://share.weiyun.com/2pn97By4 密码:c58ghh
CKA认证难吗?考试内容有哪些?这个应该是很多准备考CKA认证的学员想问的问题。那么我们今天就针对这个进行详细的讲解。
CKA认证全称是 Certificated Kubernetes Administrator,也就是官方认证的 Kubernetes 管理员,由 Kubernetes 的管理机构 CNCF 授权。
CKA认证考试的题目全部是实操题,没有任何一个选择题或者填空题之类的,而且经常听学员反馈考点设备的网络较卡,设备反应慢等问题,考试环境中需要你自己动手把所有的实操题全部完成才行,所以对于没有基础的学员来说还是有难度的。
考试内容涵盖了k8s的方方面面,包括应用的生命周期管理,网络,存储以及运维等……具体可以看cncf官网里的考试指南。
以下是代码实战:
在common中引入的坐标依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
迭代查询代码,一级缓存与二级缓存结合:
@GetMapping("query")
public Object query(String id) {
String articleKey = "article:" + id;
String articleKeyRedis = "REDIS_ARTICLE:" + id;
Article article = cache.get(articleKey, s -> {
System.out.println("文章id为"+id+"的没有查询到,则从Redis中查询后返回...");
Article articleReal = null;
String articleJsonStr = redis.get(articleKeyRedis);
// 判断从redis中查询到的文章数据是否为空
if (StringUtils.isBlank(articleJsonStr)) {
System.out.println("Redis中不存在该文章,将从数据库中查询...");
// 如果为空,则进入本条件,则从数据库中查询数据
articleReal = articleService.queryArticleDetail(id);
// 手动把文章数据设置到redis中,后续再次查询则有值
String articleJson = JsonUtils.objectToJson(articleReal);
redis.set(articleKeyRedis, articleJson);
} else {
System.out.println("Redis中存在该文章,将直接返回...");
// 如果不为空,则直接转换json类型article再返回即可
articleReal = JsonUtils.jsonToPojo(articleJsonStr, Article.class);
}
return articleReal;
});
return article;
}
-- 通过lua脚本,获得一个数组中的所有string类型数据和所有number类型数据,
-- 如果不是string和number,则作为其他数据类型
-- 最终把这3种类型的数据,作为array进行输出
function getInnerArray(arr)
strArr = {};
numArr = {};
otherArr = {};
for index,value in ipairs(arr) do
-- print(index, value);
if ("string" == type(value)) then
table.insert(strArr, value);
elseif ("number" == type(value)) then
table.insert(numArr, value);
else
table.insert(otherArr, value);
end
end
totalArray = {};
table.insert(totalArray, strArr);
table.insert(totalArray, numArr);
table.insert(totalArray, otherArr);
return totalArray;
end
local temp = {"123", "abc", "xyz", 456, 789, 1010, true, false, {"x", 100}};
totalArray = getInnerArray(temp);
-- print(totalArray);
print("===== 打印 strArr =====");
for index,value in ipairs(totalArray[1]) do
print(index,value)
end
print("===== 打印 numArr =====");
for index,value in ipairs(totalArray[2]) do
print(index,value)
end
print("===== 打印 otherArr =====");
for index,value in ipairs(totalArray[3]) do
print(index,value)
end
根据每次请求的url地址,hash后访问到固定的服务器节点。
-- 引入本地缓存article_cache
local local_cache = ngx.shared.article_cache;
local args = ngx.req.get_uri_args();
local articleId = args["id"];
local articleKey = "REDIS_ARTICLE:" .. articleId;
local local_article = local_cache:get(articleKey);
ngx.log(ngx.ERR, "ngx本地缓存local_article: ", local_article);
-- 本地缓存不为空,直接返回article
if local_article ~= nil then
ngx.say("by openresty local 106: " .. local_article);
return;
end
-- 本地缓存为空,则进入redis
if local_article == nil then
ngx.log(ngx.ERR, "ngx本地缓存为空, 将从redis中获得... ");
local articleDetail = redis.get(articleKey);
if articleDetail ~= ngx.null then
ngx.say("by openresty 106: " .. articleDetail);
-- 再设置进本地字典
local_cache:set(articleKey, articleDetail, 5);
return;
end
end
因为发送Ajax请求的时候,前端项目先做数据验证,这就离不开验证函数。在/src/utils目录中创建validate.ts文件,然后定义若干验证函数。
<template>
<!-- 避免路由引用页面的时候浏览器不刷新内容,所以给URL添加随机数参数 -->
<router-view :key="router.currentRoute.value.query.random" />
</template>
<script lang="ts" setup>
import router from '../../router/index';
</script>
<style lang="less" scoped>
@import url('main.less');
</style>
注意事项
1、CKA认证考试题每1-2年变更小范围一次,但考察的内容和题基本是固定的,只要将每道题做熟,并理解,通过基本没有问题
2、英文不好的同学,可以选择中文考试,由于是国外考试,所以网络环境很重要,早上6点-9点网速比较快,要提前做好测试。
3、考试时可以访问kubernets官网查找资料,因为是外网,如果无法访问,准备个科学上网。
4、考试时监考老师要检查证件和室内环境,选择中文考试的同学可持护照或信用卡进行检查。
5、考试环境有多个k8s集群,要切换到要求的环境中进行答题。
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
const history = createWebHistory();
const routes : Array<RouteRecordRaw> = [
{
path: '/front',
name: 'Front',
component: () => import('../views/front/main.vue'),
children: [
{
path: 'index',
name: 'FrontIndex',
component: () => import('../views/front/index.vue')
}
]
},
{
path: '/mis',
name: 'Main',
component: () => import('../views/mis/main.vue'),
children: [
]
},
{
path: '/mis/login',
name: 'MisLogin',
component: () => import('../views/mis/login.vue')
},
{
path: '/404',
name: '404',
component: () => import('../views/404.vue')
},
{
path: '/:pathMatch(.*)*',
redirect: '/404'
}
];
const router = createRouter({
history,
routes
});
router.beforeEach((to, from, next) => {
let permissions = localStorage.getItem('permissions');
let token = localStorage.getItem('token');
let fullPath = to.fullPath;
if (fullPath.startsWith('/mis') && fullPath != '/mis/login') {
if (permissions == null || permissions == '' || token == null || token == '') {
next({ name: 'MisLogin' });
} else {
return next();
}
} else if (fullPath.startsWith('/front/customer') || fullPath.startsWith('/front/goods_snapshot')) {
if (token == null || token == '') {
next({ name: 'FrontIndex' });
} else {
return next();
}
} else {
return next();
}
});
export default router;
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
0 回复
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传