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负载情况。

课程回放:

3.19日 20:00分 参与直播,有机会获得小米炫彩背包干货书籍一份!

了解新钛云服

招聘|挑战百万年薪

TiOps,支持多云环境安全远程运维,疫情期间免费对外开放,助力远程安全办公!

新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照

深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁

新钛云服一周年,完成两轮融资,服务五十多家客户

上海某仓储物流电子商务公司混合云解决方案

新钛云服出品的部分精品技术干货

国内主流公有云VPC使用对比及总结

万字长文:云架构设计原则|附PDF下载

刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!

Ceph OSD故障排除|万字经验总结

七个用于Docker和Kubernetes防护的安全工具

运维人的终身成长,从清单管理开始|万字长文!

OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

什么是云原生?

IT混合云战略:是什么、为什么,如何构建?