原创 kubernetes添加第三方存儲(三)

前面兩篇文章已經介紹了整體的內容,下面就已對青雲的存儲爲例,先提供一個Provision的實現 func (c *volumeProvisioner) Provision(options controller.VolumeOpti

原创 kubernetes添加第三方存儲(二)

上一篇介紹創建存儲pv的流程,那個有個存儲需要掛載到容器裏面才能被使用,下面還需要一個通用的接口felx去將存儲掛載到容器裏面。 kubernetes存儲的使用和協助需要分別實現掛載和解掛的接口 kubernetes下面pkg

原创 linux內核網絡參數tcp_tw_recycle 和 tcp_tw_reuse 你搞清楚了嗎?

今天在生產環境遇到了一個奇怪的網絡現象,通過抓包發現,SYN包沒有ACK。可以ping通,防火牆開放的情況下,基本確定對方服務器問題。 首先排除端口是否已經耗盡,發現仍有很多富餘 那麼可能就是linux內核網絡參數tcp_tw_r

原创 磨刀不誤砍柴工(1)stress 和 pidstat

stress命令 stress命令是一個常用的壓測工具 常用參數解析: -t, --timeout N 超時時間,指定stress執行多長時間 -c, --cpu N 啓動N個線程執行開方操作,目的就是把這

原创 golang的slice你真的搞懂了嗎

golang slice 先看一個簡單的代碼塊 package main import ( "fmt" ) func main() { //case 1 a := []int{} a = append(a, 1) a =

原创 輕鬆一刻,算法求最大蓄水面積

一個有意思的題目,求最大蓄水面積 簡單介紹一下,找到兩個柱子,使其“蓄水”面積最大譬如 Input: [1,8,6,2,5,4,8,3,7] Output: 49 如果是直接暴力破解當然可以,兩層for循環,組合所有可能,搞定 當

原创 flannel 最新版網絡實現解析

文章發佈在公司網站上,在此鏈接記錄一下: http://college.creditease.cn/#/detail/15/176

原创 linux網絡hack用法之onlink路由

在單網卡機器上,如果配置eth0的地址爲192.168.40.249/32,那麼別指望用常規的方式添加任何路由,這是因爲鏈路層直連路由已經不存在了,我們如下的嘗試: route add -net 192.168.0.0/16 gw

原创 kubernetes 問題彙總

invalid容器 創建的容器有個創建的時長的選項age,測試環境發現有的容器時間是invalid,通過代碼查看原來是時間不對 因爲每個kubelet是定時上報的,上報是基於本地當前時間的。 wildfly-rc-1l9qv 0

原创 linux的網絡hack用法之arp

arp 我們都知道arp協議在網絡中重要位置,如果沒有arp整個二層和三層的網絡將全部癱瘓,那麼linux 內核在arp上面有哪些細節和特殊用法嗎,下面我們逐一介紹 首先看一下各種狀態 這裏我們看到arp表所有的狀態信息,我特地標

原创 每天理解一點Linux內核之地址映射

我們知道Linux內核對內存的管理主要都是通過分頁來完成的,那麼實際的物理頁和虛擬頁是怎樣的對應的。這篇blog我們試圖去聊着這個機制。 1.虛擬地址劃分 32位地址意味着4G的虛存空間,Linux內核將這4G的空間分成兩個部分,將高的1

原创 Docker 問題彙總

容器沒法退出問題 當我們通過exec進入docker容器後,執行完一大堆命令後執行exit退出發現沒法退出,一直提示 There are stopped jobs 其實這個和docker本身沒有關係,是控制檯關聯的後端程序沒有停止,子程序

原创 記錄一次奇怪的tcpdump

tmpdump在我們日常的工作中經常使用,先介紹一下基本使用 tcpdump -i eth0 icmp -i 是指定網卡, icmp是協議。 還有一些其他常用參數譬如 -b在數據-鏈路層上選擇協議,包括ip、arp、rarp、i

原创 每天理解一點Linux內核之進程的四個要素

1.程序 程序是靜態的代碼,而進程是運行的程序。程序好比是劇本,而進程就是戲,戲是按照劇本演的。 2.私有財產 每個進程都有自己專有的系統堆棧空間 3.戶口 在內核中有一個task_struct數據結構,操作系統裏面通常叫做進程控制塊PC

原创 cobra 入門

任何一個知識點如果深入學習都是有很多值得深思的地方,kubectl是一個再簡單不過的工具,但是它裏面引用的一些第三方的包卻有很值得考究,第一個是cobra。 舉個例子 pkg/kubectl/cmd/exec.go func NewC