-
k8s的集群组件有哪些?功能是什么?
-
kubectl命令相关:如何修改副本数,如何滚动更新和回滚,如何查看pod的详细信息,如何进入pod交互?
修改副本数 kubectl scale deployment redis —replicas=3
活动更新kubectl set image deployments myapp-deploy myapp=myapp:v2
回滚kubectl rollout undo deployments myapp-deploy
查看pod详细信息kubectl describe pods/
进入pod交互kubectl exec -it -c bash -
etcd数据如何备份?
etcdctl —endpoints=”https://192.168.32.129:2379,https://192.168.32.130:2379,192.168.32.128:2379“ —cacert=/etc/kubernetes/cert/ca.pem —key=/etc/etcd/cert/etcd-key.pem —cert=/etc/etcd/cert/etcd.pem snapshot save snashot1.db
Snapshot saved at snashot1.db -
k8s控制器有哪些?
副本集(ReplicaSet)
部署(Deployment)
状态集(StatefulSet)
Daemon集(DaemonSet)
一次任务(Job)
计划任务(CronJob)
有状态集(StatefulSet) -
哪些是集群级别的资源?
Namespace
Node
Role
ClusterRole
RoleBinding
ClusterRoleBinding -
pod状态有哪些?
Pending 等待中
Running 运行中
Succeeded 正常终止
Failed 异常停止
Unkonwn 未知状态 -
pod创建过程是什么?
SAVE_20201126_181652.jpg -
pod重启策略有哪些?
Pod的重启策略有3种,默认值为Always。
Always : 容器失效时,kubelet 自动重启该容器;
OnFailure : 容器终止运行且退出码不为0时重启;
Never : 不论状态为何, kubelet 都不重启该容器
9. 资源探针有哪些?
ExecAction:在容器中执行一个命令,并根据其返回的状态码进行诊断的操作称为Exec探测,状态码为0表示成功,否则即为不健康状态。
TCPSocketAction:通过与容器的某TCP端口尝试建立连接进行诊断,端口能够成功打开即为正常,否则为不健康状态。
HTTPGetAction:通过向容器IP地址的某指定端口的指定path发起HTTP GET请求进行诊断,响应码为2xx或3xx时即为成功,否则为失败。
10. requests和limits用途是什么?
“requests”属性定义其请求的确保可用值,即容器运行可能用不到这些额度的资源,但用到时必须要确保有如此多的资源可用
”limits”属性则用于限制资源可用的最大值,即硬限制
11. kubeconfig文件包含什么内容,用途是什么?
包含集群参数(CA证书、API Server地址),客户端参数(上面生成的证书和私钥),集群context 信息(集群名称、用户名)。
-
RBAC中role和clusterrole区别,rolebinding和 clusterrolebinding区别?
Role 可以定义在一个 namespace 中,如果想要跨 namespace则可以创建ClusterRole,ClusterRole 具有与 Role相同的权限角色控制能力,不同的是 ClusterRole 是集群级别的
RoleBinding 适用于某个命名空间内授权,而 ClusterRoleBinding 适用于集群范围内的授权 -
ipvs为啥比iptables效率高?
IPVS模式与iptables同样基于Netfilter,但是ipvs采用的hash表,iptables采用一条条的规则列表。iptables又是为了防火墙设计的,集群数量越多iptables规则就越多,而iptables规则是从上到下匹配,所以效率就越是低下。因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能 -
sc pv pvc用途,容器挂载存储整个流程是什么?
PVC:Pod 想要使用的持久化存储的属性,比如存储的大小、读写权限等。
PV :具体的 Volume 的属性,比如 Volume 的类型、挂载目录、远程存储服务器地址等。
StorageClass:充当 PV 的模板。并且,只有同属于一个 StorageClass 的 PV 和 PVC,才可以绑定在一起。当然,StorageClass 的另一个重要作用,是指定 PV 的 Provisioner(存储插件)。这时候,如果你的存储插件支持 Dynamic Provisioning 的话,Kubernetes 就可以自动为你创建 PV 了。 -
nginx ingress的原理本质是什么?
ngress controller通过和kubernetes api交互,动态的去感知集群中ingress规则变化,
然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置,
再写到nginx-ingress-controller的pod里,这个Ingress
controller的pod里运行着一个Nginx服务,控制器会把生成的nginx配置写入/etc/nginx.conf文件中,
然后reload一下使配置生效。以此达到域名分配置和动态更新的问题。 -
描述不同node上的Pod之间的通信流程
-
k8s集群节点需要关机维护,需要怎么操作
进行pod驱逐:kubelet drain
检查node上是否无pod运行,切被驱逐的pod已经在其他节点运行正常
关机维护
开机启动相关服务(注意启动顺序)
解除node节点不可调度:kubectl uncordon node
创建测试pod,并使用节点标签测试节点可以被正常调度 -
canal和flannel区别
Flannel(简单、使用居多):基于Vxlan技术(叠加网络+二层隧道),不支持网络策略
Calico(较复杂,使用率少于Flannel):也可以支持隧道网络,但是是三层隧道(IPIP),支持网络策略
Calico项目既能够独立地为Kubernetes集群提供网络解决方案和网络策略,也能与flannel结合在一起,由flannel提供网络解决方案,而Calico此时仅用于提供网络策略。