自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes 部署應(yīng)用(Nginx)的兩種方式,你更喜歡哪一種?

云計(jì)算 云原生
Kubernetes 服務(wù)有四種類(lèi)型:ClusterIP、NodePort、LoadBalancer 和ExternalName。服務(wù)Spec中的type 屬性決定了服務(wù)如何暴露給網(wǎng)絡(luò)。

k8s發(fā)布應(yīng)用的兩種方式:

  • kubernetes-dashboard
  • kubectl命令行

一、Dashboard方式

配置部署:包含應(yīng)用名稱(chēng)、容器鎰、pod數(shù)量、Service非常的方便,不想設(shè)置配置yaml的可以很方便的部署。

點(diǎn)擊部署就成功了k8s應(yīng)用的部署了。部署后可以看到相應(yīng)的deployment、pod、service等狀態(tài)和信息。

  • Deployment

  • Pod

  • Service

  • 監(jiān)控

二、命令行方式

1、創(chuàng)建namespace

vim nginx-namespace.yaml
apiVersion: v1 #類(lèi)型為Namespace
kind: Namespace  #類(lèi)型為Namespace
metadata:
  name: ns-test  #命名空間名稱(chēng)
  labels:
    name: label-test  #pod標(biāo)簽

執(zhí)行:

#創(chuàng)建
kubectl create -f nginx-namespace.yaml
#查詢(xún)
kubectl get namespace

2、創(chuàng)建pod

一般不直接create pod,而是通過(guò)controller來(lái)創(chuàng)建pod。deployment為其中一種controller。

vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-test
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80

執(zhí)行:

#創(chuàng)建
kubectl create -f nginx-deployment.yaml
#查詢(xún)。查詢(xún)時(shí)需要等待一會(huì),此時(shí)會(huì)下載鏡像需要時(shí)間
kubectl get deployment  -n ns-test
#或
kubectl get pods -n ns-test

可以看到"replicas: 3",所以有3個(gè)pod并且每個(gè)pod只有一個(gè)容器。都正常啟動(dòng)。

接下來(lái)看看如何訪問(wèn),查看訪問(wèn)的端口:

kubectl get pods -o wide -n ns-test   #-o wide 展開(kāi)的意思

這時(shí)已經(jīng)可以訪問(wèn)了,就是通過(guò)虛擬ip來(lái)端口。

  • curl 10.244.1.43
  • curl 10.244.1.44
  • curl 10.244.1.45

如下圖,只要集群范圍內(nèi)的機(jī)器就可以直接通過(guò)IP訪問(wèn)了。

那問(wèn)題來(lái)了,這么多虛擬ip,每次pod重建還會(huì)重新生成,那怎么辦呢?

看下面的servcie。

3、創(chuàng)建service

vim nginx-service.yaml:

apiVersion: v1
kind: Service
metadata:
  namespace: ns-test
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

執(zhí)行:

kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service -o wide  -n ns-test

可以看到有一個(gè)cluster-ip,通過(guò)這個(gè)端口+端口就可以負(fù)載到之前3個(gè)節(jié)點(diǎn)的nginx了。

當(dāng)然cluster-ip也只能在集群內(nèi)的機(jī)器訪問(wèn)。再結(jié)合nginx或域名就可以向外提供負(fù)載均衡訪問(wèn)了。

可以看到cluster-ip雖然有負(fù)載均衡的功能但還是不能外網(wǎng)訪問(wèn)k8s部署的應(yīng)用,那如何才能直接外網(wǎng)能訪問(wèn)k8s部署的應(yīng)用呢?

設(shè)置service為nodeport方式,如下:

apiVersion: v1
kind: Service
metadata:
  namespace: ns-test
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - nodePort: 30000
  	protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

其中type: NodePort另外想指定端口也可以加上nodePort: 30000。這樣就可以通過(guò)主機(jī)ip+nodePort的訪問(wèn)k8s部署的應(yīng)用了。

執(zhí)行:

kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service -o wide  -n ns-test

可以看到我使用的是我主機(jī)的ip+nodePort可以直接訪問(wèn)到nginx了。

三、補(bǔ)充知識(shí)

1、Service

Kubernetes 服務(wù)有四種類(lèi)型:ClusterIP、NodePort、LoadBalancer 和ExternalName。服務(wù)spec中的type 屬性決定了服務(wù)如何暴露給網(wǎng)絡(luò)。

  • ClusterIP 類(lèi)型的服務(wù)將在集群內(nèi)部暴露,并分配一個(gè) cluster IP 地址。Pod 可以通過(guò)這個(gè) IP 地址來(lái)訪問(wèn)該服務(wù)。ClusterIP 類(lèi)型的服務(wù)適用于需要在集群內(nèi)部訪問(wèn)的服務(wù),例如數(shù)據(jù)庫(kù)服務(wù)。
  • NodePort 類(lèi)型的服務(wù)將在每個(gè)節(jié)點(diǎn)上暴露一個(gè)端口,并分配一個(gè) cluster IP 地址。外部客戶(hù)端可以通過(guò) <NodeIP>:<NodePort> 來(lái)訪問(wèn)該服務(wù)。NodePort 類(lèi)型的服務(wù)適用于需要在集群外部訪問(wèn)的服務(wù),例如 Web 服務(wù)。
  • LoadBalancer 類(lèi)型的服務(wù)將使用集群外部的負(fù)載均衡器來(lái)暴露服務(wù)。外部客戶(hù)端可以通過(guò)負(fù)載均衡器的 IP 地址來(lái)訪問(wèn)該服務(wù)。LoadBalancer 類(lèi)型的服務(wù)適用于需要在集群外部訪問(wèn)的服務(wù),并且需要高可用性的服務(wù)。一般LoadBalancer是付費(fèi)提供的。
  • ExternalName 類(lèi)型的服務(wù)將將服務(wù)指向一個(gè)外部主機(jī)或域名。Pod 可以通過(guò)該主機(jī)或域名來(lái)訪問(wèn)該服務(wù)。ExternalName 類(lèi)型的服務(wù)適用于需要訪問(wèn)外部服務(wù)的場(chǎng)景。
責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2022-05-07 09:20:38

智能客服模塊方案

2010-06-12 11:03:02

UML應(yīng)用

2014-09-10 10:04:37

程序員

2014-09-10 10:43:58

程序員

2017-11-13 12:01:31

開(kāi)發(fā)者編程編程風(fēng)格

2010-09-09 09:24:43

極客專(zhuān)屬人格技術(shù)狂人

2021-04-05 14:44:20

JavaScript循環(huán)代碼

2018-01-05 08:53:32

LinuxUbuntu發(fā)行版

2024-11-28 09:06:52

2015-04-17 10:21:37

云存儲(chǔ)附加存儲(chǔ)

2011-07-27 13:03:09

2013-12-27 09:42:04

程序員趣聞

2022-11-03 08:49:10

IT認(rèn)證職業(yè)

2010-12-20 11:12:31

企業(yè)網(wǎng)絡(luò)VPN

2018-02-27 10:36:20

物聯(lián)網(wǎng)無(wú)線通信應(yīng)用程序

2021-01-06 08:05:32

JavaSocke粘包

2021-07-25 20:22:04

容器技術(shù)計(jì)算

2011-07-25 10:57:02

信息安全認(rèn)證IT安全學(xué)歷信息安全職業(yè)

2023-03-30 15:28:24

2019-11-14 08:42:57

Redis數(shù)據(jù)庫(kù)Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)