k8s最佳实践

K8S 实践 首先,我们拿到一个 case 的时候,优先考虑的是业务类型以及业务规模;只有大致确定了业务的类型和规模后,我们才可以根据业务类型确定集群规模和集群的兼容(容忍)性。 比如,针对电商业务,需要有大促的突发流量;比如针对流媒体视频处理,考虑的是视频的渲染计算和存储;又比如传统媒体行业如维基百科,没有太多突发的流量,有的只是文本,图片的静态化,CDN 缓存处理;所以,不同的业务类型所考虑的东西不同,但是,k8s 作为一个主流的容器调度平台,云原生时代的操作系统,他是一个通用化的平台,有一个比较通用的实践方式,有了通用的实际方式以后,企业内部只需要针对内部具体的业务特点做定制化处理就可以了。 企业内部如果要自建 k8s 集群的话,有很多地方需要考虑,但是总结下来,主要是计算(cpu/gpu/内存),存储,网络,以及与其他业务交互(主要是业务架构)等几个方面,以及构建后自身的监控,告警,日常运维保障(sre)。 网络规划 在企业内部或者云上构建一个集群的时候,摆在第一位的就是网络的规划,类似于想致富先修路,要先有基础网络。在 k8s 集群中有三种网络类型:节点网络,容器网络,服务网络。 企业内部一般有自己的网管,有自己的专用 VPC 网络(大类局域网),我们网络的一切都是从他开始。 VPC 网段和三种网络类型 在创建 Kubernetes 集群时,需要指定专有网络 VPC、节点交换机网段、Pod 网络 CIDR(地址段)和 Service CIDR(地址段)。因此需要提前规划节点网络地址、Kubernetes Pod 地址和 Service 地址。 专有网络 VPC 网段包含 VPC 自身网段和节点交换机网段,Kubernetes 网段规划包含 Pod 地址段和 Service 地址段,以上两种网段是通过 cni 实现的,不同的 CNI 模式,会有一些差异,我们以 Flannel 网络模式为例子(其他 cni 网络模式原理类似)。 配置 Flannel 模式网络时 ,需要设置的参数及参数网段配置的注意事项如下: 专有网络 您在创建 VPC 时需要选择网段,只能从 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 三类私有保留网段当中选择一个(公司内部直接就选择一个地址空闲地址网络区间)。 节点网络交换机 节点网络(一般构建在同一个交换机网段下),用于节点间网络通信。在 VPC 里创建交换机时指定的网段,必须是当前 VPC 网段的子集(可以和 VPC 网段一样,但不能超过)。配置网段时,请注意: 交换机下 vm(或者物理机)所分配到的地址,就是从这个交换机网段内获取的。 一个 VPC 下,可以创建多个交换机,但交换机网段不能重叠。 Pod 网络 CIDR...

2021-11-20 · 17 分钟 · 3471 字 · Me

client-go基本使用

1. client-go 简介 1.1 client-go 说明 ​ client-go 是一个调用 kubernetes 集群资源对象 API 的客户端,即通过 client-go 实现对 kubernetes 集群中资源对象(包括 deployment、service、ingress、replicaSet、pod、namespace、node 等)的增删改查等操作。大部分对 kubernetes 进行前置 API 封装的二次开发都通过 client-go 这个第三方包来实现。 ​ client-go 官方文档:https://github.com/kubernetes/client-go 1.2 示例代码 git clone https://github.com/huweihuang/client-go.git cd client-go #保证本地HOME目录有配置kubernetes集群的配置文件 go run client-go.go client-go.go package main import ( "flag" "fmt" "os" "path/filepath" "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) func main() { var kubeconfig *string if home := homeDir(); home != "" { kubeconfig = flag....

2018-12-16 · 10 分钟 · 2112 字 · Me