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