1. api接口和python库的区别是什么
API
接口属于一种操作系统或程序接口,而后两者都属于直接用户接口。
有时公司会将
API
作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式
API。
2. kubernetes 指定在哪个node启动镜像
Kubelet运行在Kubernetes Minion Node上. 它是container agent的逻辑继任者(使用golang重写),它是GCE镜像的一部分. Kubelet二进制程序负责维护在特定主机上运行的一组容器。它从配置文件或是从etcd 服务器上同步容器配置清单。容器配置清单是描述一个pod的文件。Kubelet采用一组使用各种机制提供的清单并确保这些清单描述的容器被启动并持续运行. 有以下几种方式提供给kubelet一个容器清单:
文件 通过一个命令行参数传递。此文件每20秒(可配置)重新检查.
HTTP URL 通过命令行参数传递HTTP URL参数。 此端点每20秒检查(也可配置), 通过查询获得容器清单.
Etcd服务器 Kubelet发现etcd服务器并watch相关的key。watch的etcd key是 /registry/nodes/$(hostname -f)。由于这是一种etcd watch机制,注意到改变并采取相应的行动非常迅速. Kubelet 的组成元素可以从如下代码-Kubelet结构体定义看出:
// Kubelet 结构体描述了kubelet使用到的重要元素.
type Kubelet struct {
hostname string
dockerClient dockertools.DockerInterface
rootDirectory string
networkContainerImage string
podWorkers *podWorkers
resyncInterval time.Duration
pods []api.BoundPod
etcdClient tools.EtcdClient
...
cadvisorClient cadvisorInterface
...
}
其中重要的是如下的几个元素:
dockerClient : 使用github.com/fsouza/go-dockerclient 作为docker client.
etcdClient : 使用 coreos/go-etcd/etcd 作为etcd client.
rootDirectory : 维护kubelet文件(volume mounts,etc) 的目录.默认值是/var/lib/kubelet
podWorkers : 记录上面有正在运行工作的workers的pod信息
cAdvisorClient : google cAdvisor 用来监测minion机器和之上容器的资源使用情况. 使用github.com/google/cadvisor/client
其中还有一个配置Kubelet的结构体,名为KubeletConfig, 他从启动命令行参数构造,最后作为启动kubelet的参数传入,源代码如下,具体可以参见后文的描述.
type KubeletConfig struct {
EtcdClient tools.EtcdClient
DockerClient dockertools.DockerInterface
CAdvisorPort uint
Address util.IP
...
AllowPrivileged bool
HostnameOverride string
RootDirectory string
...
ManifestURL string
FileCheckFrequency time.Duration
HttpCheckFrequency time.Duration
Hostname string
...
}
3. etcd是改用gRPC了吗为什么
缺点:目前版本来说实测性能肯定是差thrift一截的(实测grpc0.8版本).应该就是缺点吧,虽然用了netty和protobuf 优点:采用HTTP2的好处在于,因为添加了头信息,可以方便在框架层面对调用做拦截和控制(比如说限流,调用链分析,安全认证等) 而且http2为标准协议,也方便以后扩展兼容其它调用端 不过目前的grpc虽然支持了拦截,但是Header信息和消息体是分离的,而且暂时没法控制方法执行与否,所以很多功能还不能实现 (主要是没能从protobuf层面解决Header的问题) 另外,使用grpc既要安装protobuf又要使用maven或gradle的生成xxxGRPC的插件,实在麻烦,而且 client_to_server client_to_server_streaming server_to_client_streaming bidirectional_streaming 几类调用方式实现的API也过于繁琐 所以综合起来目前我们在自己的分布式服务框架里使用的时自己实现的infogen-rpc框架,如果后面的release版本确实好用或许会换回来吧,毕竟grpc的多语言还是做得不错
4. 简述Kubernetes各模块如何与API Server通信
Kubernetes API Server作为集群的核心,负责集群各功能模块之间的通信。集群内的各个功能模块通过API Server将信息存入etcd,当需要获取和操作这些数据时,则通过API Server提供的REST接口(用GET、LIST或WATCH方法)来实现,从而实现各模块之间的信息交互。
如kubelet进程与API Server的交互:每个Node上的kubelet每隔一个时间周期,就会调用一次API Server的REST接口报告自身状态,API Server在接收到这些信息后,会将节点状态信息更新到etcd中。
如kube-controller-manager进程与API Server的交互:kube-controller-manager中的Node Controller模块通过API Server提供的Watch接口实时监控Node的信息,并做相应处理。
如kube-scheler进程与API Server的交互:Scheler通过API Server的Watch接口监听到新建Pod副本的信息后,会检索所有符合该Pod要求的Node列表,开始执行Pod调度逻辑,在调度成功后将Pod绑定到目标⌄节点上。我推荐你去看看时速云,他们是一家全栈云原生技术服务提供商,提供云原生应用及数据平台产品,其中涵盖容器云PaaS、DevOps、微服务治理、服务网格、API网关等。大家可以去体验一下。
5. etcd-v3.3.10版本和3.3.9一样吗
,
6. kong网关怎么获取etcd端口
etcd简介与应用场景 etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与...
2.
单机模式运行 默认在centos7的yum源里已集成了etcd包,可以通过yum进行安装...
3.
集群模式说明 这里的集群模式是指完全集群模式,当然也可以在单机上通过不同的端口,部署伪...
4.
静态模式 如果只是测试,这里建议使用二进制包进行测试。因为源码包编译的,使用etcd命令...
5.
动态配置 静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能
7. 使用docker启动的etcd为什么无法在本地使用restful api接口
kubernetes是go语言写的,他里面有一些restful api接口,因为kubernetes是用来管理docker的嘛 然后他可以把正常的docker命令变成json格式命令发送,这个网上好像有专门java库已经封装好的,
,
8. 求《etcd技术内幕豆瓣》全文免费下载百度网盘资源,谢谢~
《etcd技术内幕豆瓣》网络网盘pdf最新全集下载:
链接: https://pan..com/s/1UnVa2L9WW-SW-I8Nf0lP1Q