K8s 的端口port映射問題

背景

對于port 可能有以下大概三種需求

  1. 同一個pod 里不同container 可以訪問
  2. 在一個cluster 里, 不同pod 里可以訪問
  3. 暴露到集群外面躯保。即 可以在集群外通過ip 端口訪問

先來了解下 k8s cluster networking

k8s cluster networking

每個pod 都有自己的 IP 地址 泣矛。這意味著你不需要 處理容器port 對 主機(jī) port 的映射窖维。pods 就像VM 或者 物理機(jī)哪樣

k8s 的IP 地址 存在于 pod scope - 在一個Pod 的 容器們 共享 networknamespaces, 包括IP 地址曙寡。這意味著在一個pod 里的容器們 能夠通過localhost 訪問彼此的 端口讼溺。這也意味著 在一個pod 里的容器們需要協(xié)調(diào) 端口的使用。這就叫做 "IP-per-pod" model

來看一個例子

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80

將上面代碼保存為nginx.yaml

kubectl apply -f nginx.yaml
# 查看pod
kubectl get pods -l run=my-nginx -o wide
# 查看pod ip
kubectl get pods -l run=my-nginx -o yaml | grep podIP

你可以ssh 連接到集群里的任意一個node 并curl IPs叼耙。 Note: 這個容器沒有用node 的80 端口腕窥。也沒有用NAT 規(guī)則到這個pod 上。這意味著可以在同一個node 上使用相同的 containerPort 并且在 你的集群里用ip 從node或者其他 pod 上去訪問 它們筛婉。類似 Docker, ports 仍然可以被 published 到 host node 的接口上油昂。但在這個網(wǎng)絡(luò)模型下這個需求大大減少了。

Service

為什么需要 service ?

我們可以直接與pod 交流倾贰。但是當(dāng) 一個node die 的時候會發(fā)生什么呢冕碟?
pod 也會die, 然后Deployment 會創(chuàng)建新的pods(IP不同)。這是 Service 要解決的問題匆浙。
來看一個service yaml

apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 80
  selector:
    run: my-nginx

kubectl get svc my-nginx

?  k8s_demo kubectl get svc my-nginx
NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
my-nginx   ClusterIP   10.68.82.69   <none>        8080/TCP   26s

你可以從集群里的任意node 上 curl nginx Service on <CLUSTER-IP>:<PORT>安寺。 Note: service IP 是完全虛擬的。

訪問 Service

兩種方式

  • 環(huán)境變量
  • DNS

環(huán)境變量

kubectl exec my-nginx-3800858182-jr4a2 -- printenv | grep SERVICE
這事你并沒有發(fā)現(xiàn) my-nginx servervice.因為 pods 先啟動的首尼。還帶來的一個缺點是 2個pods 都在一個機(jī)器上挑庶,當(dāng)機(jī)器掛掉, service 也會掛掉软能。我們先殺死兩個pod 然后 等待deployment 重新創(chuàng)建迎捺。會正確調(diào)度并且?guī)в姓_的環(huán)境變量。

DNS

k8s 提供了DNS 集群附加服務(wù)會自動授予其他services dns name查排。你可以檢查它是不是在你的集群運行.
你可以在一個pod里 curl <service-name>:<port> 來訪問service

kubectl get services kube-dns --namespace=kube-system

NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   10.68.0.2    <none>        53/UDP,53/TCP,9153/TCP   338d

expose internet

使用Nodeport 或者loadbalance

其他

當(dāng)刪除一個service, 再apply, cluster IP 也會變化
下面這張圖 是說明了 deployment 的port 參數(shù)凳枝。這表示這個參數(shù)是不必要的,即使沒有也會暴露出來


image.png

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跋核,一起剝皮案震驚了整個濱河市岖瑰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砂代,老刑警劉巖蹋订,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刻伊,居然都是意外死亡露戒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門捶箱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來智什,“玉大人,你說我怎么就攤上這事讼呢×寐梗” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵悦屏,是天一觀的道長节沦。 經(jīng)常有香客問我键思,道長,這世上最難降的妖魔是什么甫贯? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任吼鳞,我火速辦了婚禮,結(jié)果婚禮上叫搁,老公的妹妹穿的比我還像新娘赔桌。我一直安慰自己,他們只是感情好渴逻,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布疾党。 她就那樣靜靜地躺著,像睡著了一般惨奕。 火紅的嫁衣襯著肌膚如雪雪位。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天梨撞,我揣著相機(jī)與錄音雹洗,去河邊找鬼。 笑死卧波,一個胖子當(dāng)著我的面吹牛时肿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播港粱,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼螃成,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啥容?” 一聲冷哼從身側(cè)響起锈颗,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咪惠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淋淀,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡遥昧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了朵纷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炭臭。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖袍辞,靈堂內(nèi)的尸體忽然破棺而出鞋仍,到底是詐尸還是另有隱情,我是刑警寧澤搅吁,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布威创,位于F島的核電站落午,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肚豺。R本人自食惡果不足惜溃斋,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吸申。 院中可真熱鬧梗劫,春花似錦、人聲如沸截碴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽日丹。三九已至走哺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聚凹,已是汗流浹背割坠。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留妒牙,地道東北人彼哼。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像湘今,于是被迫代替她去往敵國和親敢朱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355