靠服务或者团体都无法启动这么简单的k8s面试问题,但是我没有回答。
kubectl get pod命令的作用是什么?
用于获取当前名称空间中所有窗格的信息。
使用此命令查看状态字段、它有多少个状态以及它的含义。
# Status值:含义Pending:等待Pod被调度的时间和通过网络容器下载映像的时间Creating: ErrImagePul:拉映像时出错PullBackOff:重试拉Pod Initializing:Pod Initializing:Running:容器正常。开始终止:结束完成:作业资源正常启动成功:POD中的所有容器都已成功终止,并且不会重新启动失败:POD中的所有容器都已终止。并且至少有一个容器因为故障而被终止。未知:由于某种原因无法获得Pod的状态。InvalidImageName:无法解析镜像名称。ImageInspectError:无法验证镜像ErrImageNeverPull:策略禁止提取镜像。CrashLoopBackOff:容器退出。库伯莱正在重启它。注册表不可用:无法连接到镜像仓库。CreateContainerConfigError:无法创建kubelet使用的容器配置。创建容器错误:无法创建容器。m . internallifecycle . prestartcon . Tainer:hook未能运行container错误:未能启动容器PostStarthookError错误:Hook未能完全初始化容器:ContainersNotInitializedContainersNotReadyDockerDaemonNo。TReady: docker未完全启动NetworkPluginNotReady:网络插件未完全启动Evicted:即驱逐,在资源不足的情况下比较常见。
我想在标签为disk:ssd的计算机上安排一项服务,但不想将其部署在kubernetes.io/hostname:node4.的一个节点上
#计划节点选择器:磁盘:SSD #未部署在节点4的节点关联:节点关联:RequiredDuringschedulingIgnoring执行:#硬策略节点选择器:-匹配表达式:-键:kubernetes.io/hostname运算符:不在值中:-节点4。
在每个已启动的pod中,检查yaml是否有resourceVersion字段。这是什么意思?
#Kubernetes中的所有资源对象都有?仅限全球?(元数据.资源版本)的版本号。每个资源对象从创建之初就会存在?版本号,?每次修改,不管是更新还是补丁修改,都会发版本号。改变。#?资源版本?重要的一个?,就是做更新请求的版本控制。#K8s要求,?更新请求中提交的对象必须有resourceVersion,这意味着我们提交更新的数据必须首先来自K8s中的现有对象。所以呢?下一个完整的更新操作过程是:-?一、从K8s获取?现有对象(可以选择直接从K8s查询;如果你在客户端上做了列表观看,建议从当地线人处获取;——然后,基于这个对象去做?一些修改,?例如,在部署中添加或减少复制副本,或将映像字段修改为?图像的新版本; -最后,通过更新请求将修改后的对象提交给K8s #。这个时候kube-apiserver会验证?用户更新请求提交对象中的resourceVersion?必须是当前K8s中该对象的最新资源版本吗?接受此更新。否则K8s会拒绝请求并告知?家用毛发?版本冲突(Conflict)。从k8s源代码中我们可以看到,resourceVersion是Etcd中的modRevision。
A服A依赖b服,有没有办法使用helm?
#在helm中,一个图表可以依赖于任意数量的其他图表。这些依赖关系可以在chart.yaml中的dependencies字段中定义:-name:appb version:3 . 2 . 1 repository:
如何以非根用户的身份运行容器
#1.从Ubuntu向Docker文件添加非root用户:18.04运行GroupAdd-G1002我的用户Useradd-u 1002-g 1002-m-s/usr/sbin/nolog在我的用户my user cmd ["/bin/bash"] # 2。Kubernetes中的Pod安全上下文,它可以帮助我们运行三方镜像API版本:v1kind:pod metadata:name:my-pod spec:security context:# User runas User:1002 runas group:1002 volumes:-name:my-vol empty dir:{ } containers:-name:my-container image:hello-world command:[" sh ","-c "," sleep 10m "。]volume mounts:-name:my-volmountpath:/data/hellosecuritycontext:#设置为false以确保RunAsUser命令无法绕过其现有权限集allowprivilegescalation:false。
goroutine知道多少,如何保证顺序执行?
Golang中的一个轻量级线程,与传统的操作系统线程相比,堆栈内存占用和创建成本更少。Goroutine由关键字go启动,可以高效并发执行,实现并发编程。//1.为每个子程序设置一个序列号。当前序列号被执行后,要执行下一个包主导入(" fmt " " sync/atomic " " time ")var count 32 func sequence(iunt 32,fn func()){ for {//使用原子操作如果n := atomic。LoadUint32(计数);n == i { fn()原子。AddUint32(count,1) break }时间。睡眠(时间。纳秒)} } func main() { var乘以uint 32 = 10 for I:= uint 32(0);I倍;i++ { go func(I uint 32){ fn:= func(){ fmt。Printf("这个I是%v “,i) } sequence(i,Fn) }(i)} //让主进程等待sequence(times,Func() {})} //2的最终执行。互斥锁异步。互斥包main import(" fmt " " sync ")func main(){ Times:= 10//创建一个互斥数组,再为主进程创建一个。使用VAR A = make ([] * sync。mutex,times+1)//将互斥锁填充到数组中。i := 0的默认直接锁定;I len(a);i++ { m := sync。互斥体{ } m . Lock()a[I]= m } for I:= 0;I倍;I++ {go func(index int) {//创建一个子协程//子协程尝试在数组中对应的索引位置锁定锁,一直等到无法获得锁,因为这些初始化的互斥体默认是锁定的,所以这里创建的子协程会被阻塞//一旦获得锁,执行逻辑,最后释放当前索引的锁和索引+1的锁, 以便等待index +1位置的锁的子进程可以继续执行一个[index]。lock () fmt。printf("此值为% d n ",index) a[index]。解锁()a[index+1]。Unlock() }(i) } a[0]。Unlock() //解锁索引为0的锁,让第一个子进程继续执行a[times]。Lock() //用次数索引加锁,只有当最后一个子进程结束时才会解锁,主进程才能继续下去}java k8s面试问题k8s详细汇总面试常见问题

本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:http://cj.annaidi.com