原创 runtime error: invalid memory address or nil defrference goroutine
go routine panic with: invalid memory address or nil defrference goroutine 查看源代碼: 正確的寫法是:
原创 kubernetes容器底層網絡要求
容器可能部署在雲上(公有云或者私有云),也可能部署在數據中心物理宿主機上。雲的場景涉及到虛擬網絡,數據中心場景就是傳統的物理網絡,這些環境的網絡架構以及底層技術有着很大的差異,這一節分析下。 不管是雲的場景還是傳
原创 Flannel網絡方案
這裏講一下Flannel網絡方案,梳理下其工作方式,各個環節配置,以及轉發包流程。 Fannel項目是CoreOS公司主推的容器網絡方案。目前實現的技術有三種,分別是: UDP Vxlan Host-GW 1. UDP方
原创 容器Namespace - 2
容器通過namespace建立屬於自己的一個相對隔離的環境,從上一篇《容器Namespace - 1》我們知道centos7默認沒有啓用user namespace。 上圖顯示容器的user name
原创 容器Namespace - 1
Namespace是怎麼回事? Linux namespace,可以理解爲將全局的操作系統資源,邏輯上劃分成功能獨立的單元。如進程號PID,這些個單元有各自獨立的PID空間,還比如網絡棧,這些個獨立的單元有各自獨立的路由表,
原创 非阻塞socket引發的數據不完整
基於Socket的網絡通訊方式,其I/O方式,由下面幾種: •blocking I/O •nonblocking I/O •I/O multiplexing (select and poll) 非阻塞模
原创 go panic (runtime error: slice bounds out of range) 分析
如圖,go程序出現panic 下面來看看這個導致panic的方法: 1)定義了一個nil的切片 var job []string定義的是一個分配了卻未初始化的對象,它的值是nil,上面的方法,如果
原创 基於spicec的usb redirection技術
1.1 功能框架 Spicec通過usb redirection實現usb 外設訪問,其中涉及usb設備的打開關閉,設備的讀寫,USB traffic的重定向,hypervisor虛擬化US B設備。 1.
原创 k8s環境下etcd分佈式數據庫集羣配置,數據存儲與發現
1. 什麼是etcd? etcd是一個分佈式一致性鍵值存儲系統,用於共享配置和服務發現, etcd基於raft協議實現數據同步(K-V數據),集羣由多個節點組成。 raft協議理解起來相比paxos並沒有簡單到哪裏,因爲
原创 Docker容器的capability
linux capability是啥? 資料來源: http://man7.org/linux/man-pages/man7/capabilities.7.html “ For the purpose of performing perm
原创 進程 vs 容器 vs 虛擬機
進程: 互相隔離的虛擬地址空間 運行中的程序,由操作系統調度執行 共享操作系統管理的資源(內存、網絡棧、I/O) 版本管理、可移植性差 容器:
原创 raw格式的鏡像,如何在網絡傳輸、備份時減少拷貝
raw 格式的鏡像,不帶matadata,就像一塊空白的磁盤,讀寫效率比qcow2快近10~30%。 本文探討下,在將這個鏡像進行網絡傳輸備份時,如何減少數據拷貝。如果一個近50G大小的文件在網絡中進行傳輸的話,即佔用
原创 socket收包函數 buffer大小的設置
Ip_ssize_t recv(Ip_fd sock, void *buf, Ip_size_t len, int flags); Ip_ssize_t recvfrom(Ip_fd fd, void *buf, Ip_size_t l
原创 Docker容器及kubernetes網絡
本文講述下docker容器以及k8s部署環境下,與網絡相關的知識。讀者需要對tcp/ip網絡,交換/路由,網絡虛擬化以及容器技術需要有一定的基礎。 1. 淺談容器網絡 容器container,就是一個被
原创 Calico網絡方案
Fannel純三層路由的方式實現不同宿主機間的容器通信,這種方式工作的前提是宿主機之間是二層連通的。需要注意的是,宿主機之間二層不連通的情況也是廣泛存在的,這就不得不提到calico網絡方案了。 Calico網絡方案同時解決