Q&A—Kubernetes最佳实践

2020年3月10日,新钛云服举办的混合云2.0系列沙龙—《Kubernetes最佳实践》直播现场火爆。我们特将大家关心的互动提问梳理,由微软 Azure 资深工程师 倪朋飞&新钛云服专家共同回答,供大家参阅。

1、对于静态Ip的支持有什么好的方法吗?

大多数开源的CNI插件都不支持静态IP,所以最后好的方法是自己开发一个新的CNI插件。

2、请问老师,helm3与operator是怎么定位的呀?

Helm3相当于是Linux中的yum和apt,是Kubernetes应用程序包的通用管理程序;operator更多的是针对某一个特定的有状态应用,一般没有通用性。

3、现在K8S安全是硬件为主还是软件为主呢?

软件为主,大都是基于Linux内核中的安全特性。当然,集群外部入口处也会有硬件防火墙。

4、怎么自动扩展Node?

安装cluster-autoscaler扩展。

5、flannal、calico,如何选?

这个要看场景了。最简单的是不是需要NetworkPolicy,需要的话就选Calico。

6、目前K8S部署一般推荐什么方案?

推荐使用公有云上托管的Kubernetes,非公有云上推荐使用kubeadm。

7、k8s生产上哪个版本好?

推荐比开源社区最新版旧一个版本,这样稳定性最好。

8、ingress controller 在集群中,最佳实践是通过什么方法来处理默认的80和443端口呢 ?

如果没有service=loadbalance 的话。可以用NodePort。

9、请问现在Kubernetes目前有IPv6需求吗,或是在社区有计划吗?

很早就已经支持单栈IPv6了,最新版本也支持IPv4和IPv6双栈。

10、发布的除了helm,还有什么好的其他?

Helm是最常用的,其他的也有,比如kustomize。

11、企业落地K8S,二进制部署还是用Rancher更好?

推荐使用集成的部署方案,比如kubeadm等开源方案或者类似Rancher这种商业部署。

12、对外暴露服务,ingress方式提供出口时,怎么解决负载均衡问题?

Ingress controller 也作为一个 Deployment 部署,并放到一个LoadBalancer后面。

13、老师讲的自动扩展Node,怎么操作的?

部署 cluster-autoscaler 之后,cluster-autoscaler 会自动在云上创建新的VM作为Node。

14、pod建议用物理机还是虚拟机,另外性能上怎么考虑?

K8s里面的Pod都是容器或者虚拟机,现在还没有见到直接管理物理机的方案。

15、请教下,公司多业务多用户共用一套K8S集群,目前是用不同namespace区分,但是如何限制某个namespace的pod只能使用指定的node节点,label是可以实现,但是无法在技术上限制用户?

推荐使用Mutaing Admission Webhook或者自定义调度器来实现。

16、k8s社区目前对 cloud controller manager 支持如何 ?目前对openstack的支持,似乎并不太好。

还在Alpha阶段,很多特性还没有完全准备好。

17、使用kubeadm方式部署 ,怎么保证不雪崩呢?

使用kubeadm新增节点的时候,如果是批量安装,可以先打上特定label,避免过程中有pod就调度进来,待状态正常之后,在加入对应的label。

18、k8s中转发类型iptables和ipvs应该怎么选择?

在超过 1000 个服务的规模下,kube-proxy 的 IPVS 模式会有更好的性能表现,如果你还不确定 IPVS 是否合适,可以继续使用 iptables 模式。这种传统模式有大量的生产案例支撑,他是一个不完美的缺省选项。

19、应用部署是用service还是deployment还是用pod?

k8s中实际上对应四种业务类型:(1)长期伺候型(long-running)—-(对应API对象)—Deployment(2)批处理型(batch)—————(对应API对象)–JOB(3)节点后台支持型(node-daemon)—————(对应API对象)–Daemonset(4)有状态应用型(stateful application)—————(对应API对象)–Petset

20、我在项目上,shutdown一个worker,上面的microservice确实迁移到另一个worker了,但是发request还是有部分失败,shutdown之前已经手动scale-out多个副本了?

迁移存在一个判断时延,如果业务敏感的话 ,建议的操作步骤是,先把worker上的服务踢走,再关闭worker。

21、java程序在容器启动的时候已经声明了使用多少内存,就是jvm已经申明了,那么在pod的yaml文件中还需要声明限制吗?

需要的。

22、老师你好,请教下service后端有多个pod,service的转发为默认的简单轮询,为什么有时候请求会固定转发到其中一个pod上呢?

这个需要具体定位一下,确认每个pod的状态是不是都正常,还有各个pod负载情况。

课程回放:

https://v.qq.com/x/page/z09329bqetn.html

标签: