1.可以看服务IP地址吗?
答:可以使用kubectl命令查看,service是对外服务的ip地址,endpoints信息包含name和各个容器的ip和port;
endpoint对象主要由pod的ip和容器监听的端口号组成;endpoint对象随着pod的创建、销毁,也将 被更新;
2.service如何向后端POD负载均衡分发数据包,如何知道要负载均衡?
答:当一个service有多个endpoints时,就相当于一个service对应多个pod,这个时候就意味着要实现负载均衡,默认情况下采用随机方法,从“kube-svc”链向“kube-sep”链转发数据包。
2.1.在负载均衡时,如何实现业务应用的会话保持?
答:将service的sessionAffinity配置成ClientIP,那么在一定时间范围内向“kube-svc”链请求的数据包都会发给固定的“kube-sep”链,通过这种方式实现业务应用的会话保持。
3.Pod容器和用户容器异同?
4.iptables表里面的规则是谁创建的,如何创建的,数据包流向?
答:kube-proxy将程序缓存中的iptables规则通过iptables-restore命令更新到node节点操作系统中。
kube-proxy配置后的iptables数据包流入过程:从主机网卡上得到的数据包在经过prerouting链的nat表时,被导入kube-proxy的kube-services链,然后被导入kube-svc-xxx链,最后被导入kube-sep-xxx,数据包被DDAT到一个pod上,然后返回到prerouting链中,
5.外部应用如何访问service?
7.iptables中的规则链有哪些,做数据转发时的作用是什么?
3.nat则涉及到网络地址转换,规则链有:prerouting、postrouting和output;
4.mangle表则主要修改数据包内容,用来做流量整形的,默认规则链有:INPUT、OUTPUT、NAT、 POSTROUTING、PREROUTING;
注--》input匹配目的ip是本机的数据包;forward匹配流经本机的数据包;prerouting用来做DNAT,修改目的ip;postrouting用来做SNAT,修改源ip;
8.pod的生命周期管理?
答:
pending是开始创建pod,pod中的容器未完全启动;
running是pod被分配到node,pod中的所有容器都启动;
succeeded是pod中所有容器正常终止;
failed是pod中容器有非正常终止;
10.如何设置pod生命周期?
首先检查pod中所有初始化容器的状态,然后检查pod中所有应用容器的状态,之后根据两类容器的状态和RestartPolicy来设置Pod生命周期。
11.如何在网上访问部署好的应用?
12.pod对象各部分解析
答:
d319ad42e-b0e0-4b06-be2-2046754687-b41d0
d319ad42e-b0e0-4b06-be2-2046754687-d0xel
d319ad42e-b0e0-4b06-be2-2046754687-w7new
三个pod对象,其中d319ad42e-b0e0-4b06-be2是k8s-app的id,2046754687是pod模板的hash值,b41d0对应的是各个对象的id?
13.pod对象和service对象的异同?
14.kubernetes对pod的重启如何实现?
15.Docker的网络模式?网络通信原理?
答:Docker的默认网络模式是bridge模式,
16.集群功能模块之间的如何进行通信?
答:可以使用kubectl命令查看,service是对外服务的ip地址,endpoints信息包含name和各个容器的ip和port;
endpoint对象主要由pod的ip和容器监听的端口号组成;endpoint对象随着pod的创建、销毁,也将 被更新;
2.service如何向后端POD负载均衡分发数据包,如何知道要负载均衡?
答:当一个service有多个endpoints时,就相当于一个service对应多个pod,这个时候就意味着要实现负载均衡,默认情况下采用随机方法,从“kube-svc”链向“kube-sep”链转发数据包。
2.1.在负载均衡时,如何实现业务应用的会话保持?
答:将service的sessionAffinity配置成ClientIP,那么在一定时间范围内向“kube-svc”链请求的数据包都会发给固定的“kube-sep”链,通过这种方式实现业务应用的会话保持。
3.Pod容器和用户容器异同?
4.iptables表里面的规则是谁创建的,如何创建的,数据包流向?
答:kube-proxy将程序缓存中的iptables规则通过iptables-restore命令更新到node节点操作系统中。
kube-proxy配置后的iptables数据包流入过程:从主机网卡上得到的数据包在经过prerouting链的nat表时,被导入kube-proxy的kube-services链,然后被导入kube-svc-xxx链,最后被导入kube-sep-xxx,数据包被DDAT到一个pod上,然后返回到prerouting链中,
5.外部应用如何访问service?
答:kube-proxy在node节点上创建端口,kubernetes默认在30000-32767选择端口号给service,并且建立从node节点上的物理端口到service的iptables规则,然后kubernetes外部应用就可以通过访问node节点ip和端口来实现访问service。总而言之,就是ip和端口号的映射关系。
6.kubernetes的高可用性从哪些方面考虑?答:
1.etcd数据存储的高可用性
2.Kubernetes Master组件的高可用性7.iptables中的规则链有哪些,做数据转发时的作用是什么?
答:
1.iptables内置了filter、nat和mangle三张表;
2.filter负责过滤数据包,包括的规则链有:input、output和forward;3.nat则涉及到网络地址转换,规则链有:prerouting、postrouting和output;
4.mangle表则主要修改数据包内容,用来做流量整形的,默认规则链有:INPUT、OUTPUT、NAT、 POSTROUTING、PREROUTING;
注--》input匹配目的ip是本机的数据包;forward匹配流经本机的数据包;prerouting用来做DNAT,修改目的ip;postrouting用来做SNAT,修改源ip;
8.pod的生命周期管理?
答:
pending是开始创建pod,pod中的容器未完全启动;
running是pod被分配到node,pod中的所有容器都启动;
succeeded是pod中所有容器正常终止;
failed是pod中容器有非正常终止;
unknown是无法获取pod状态;
10.如何设置pod生命周期?
首先检查pod中所有初始化容器的状态,然后检查pod中所有应用容器的状态,之后根据两类容器的状态和RestartPolicy来设置Pod生命周期。
11.如何在网上访问部署好的应用?
答:
1.部署的服务有一个IP地址,但是这个地址只在Kubernetes集群内可用;
2.可以在主机端口上直接开放一个服务,这样做有缺陷,如果依赖主机的端口,随着应用的增多很可能会出现端口冲突,并且未来集群的扩展或主机的替换也会变得非常困难。12.pod对象各部分解析
答:
d319ad42e-b0e0-4b06-be2-2046754687-b41d0
d319ad42e-b0e0-4b06-be2-2046754687-d0xel
d319ad42e-b0e0-4b06-be2-2046754687-w7new
三个pod对象,其中d319ad42e-b0e0-4b06-be2是k8s-app的id,2046754687是pod模板的hash值,b41d0对应的是各个对象的id?
13.pod对象和service对象的异同?
14.kubernetes对pod的重启如何实现?
15.Docker的网络模式?网络通信原理?
答:Docker的默认网络模式是bridge模式,
16.集群功能模块之间的如何进行通信?
答:API Server作为集群的核心,负责集群功能模块之间的通信;集群内的功能模块通过API Server将信息存入etcd,其他模块通过AIP Server读取这些信息,从而实现模块之间的信息交互。
----未完待续