日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

k8s發布應用的兩種方式:

  • kube.NETes-dashboard
  • kubectl命令行

一、Dashboard方式

配置部署:包含應用名稱、容器鎰、pod數量、Service非常的方便,不想設置配置yaml的可以很方便的部署。

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

點擊部署就成功了k8s應用的部署了。部署后可以看到相應的deployment、pod、service等狀態和信息。

  • Deployment

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

  • Pod

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

  • Service

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

  • 監控

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

二、命令行方式

1、創建namespace

vim Nginx-namespace.yaml
 
apiVersion: v1 #類型為Namespace
kind: Namespace  #類型為Namespace
metadata:
  name: ns-test  #命名空間名稱
  labels:
    name: label-test  #pod標簽

執行:

#創建
kubectl create -f nginx-namespace.yaml
#查詢
kubectl get namespace

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

2、創建pod

一般不直接create pod,而是通過controller來創建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

執行:

#創建
kubectl create -f nginx-deployment.yaml
#查詢。查詢時需要等待一會,此時會下載鏡像需要時間
kubectl get deployment  -n ns-test
#或
kubectl get pods -n ns-test

可以看到"replicas: 3",所以有3個pod并且每個pod只有一個容器。都正常啟動。

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

接下來看看如何訪問,查看訪問的端口:

kubectl get pods -o wide -n ns-test   #-o wide 展開的意思

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

這時已經可以訪問了,就是通過虛擬ip來端口。

  • curl 10.244.1.43
  • curl 10.244.1.44
  • curl 10.244.1.45

如下圖,只要集群范圍內的機器就可以直接通過IP訪問了。

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

那問題來了,這么多虛擬ip,每次pod重建還會重新生成,那怎么辦呢?

看下面的servcie。

3、創建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

執行:

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

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

可以看到有一個cluster-ip,通過這個端口+端口就可以負載到之前3個節點的nginx了。

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

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

當然cluster-ip也只能在集群內的機器訪問。再結合nginx或域名就可以向外提供負載均衡訪問了。

可以看到cluster-ip雖然有負載均衡的功能但還是不能外網訪問k8s部署的應用,那如何才能直接外網能訪問k8s部署的應用呢?

設置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。這樣就可以通過主機ip+nodePort的訪問k8s部署的應用了。

執行:

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

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

可以看到我使用的是我主機的ip+nodePort可以直接訪問到nginx了。

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

三、補充知識

1、Service

Kubernetes 服務有四種類型:ClusterIP、NodePort、LoadBalancer 和ExternalName。服務spec中的type 屬性決定了服務如何暴露給網絡。

  • ClusterIP 類型的服務將在集群內部暴露,并分配一個 cluster IP 地址。Pod 可以通過這個 IP 地址來訪問該服務。ClusterIP 類型的服務適用于需要在集群內部訪問的服務,例如數據庫服務。
  • NodePort 類型的服務將在每個節點上暴露一個端口,并分配一個 cluster IP 地址。外部客戶端可以通過 <NodeIP>:<NodePort> 來訪問該服務。NodePort 類型的服務適用于需要在集群外部訪問的服務,例如 Web 服務。
  • LoadBalancer 類型的服務將使用集群外部的負載均衡器來暴露服務。外部客戶端可以通過負載均衡器的 IP 地址來訪問該服務。LoadBalancer 類型的服務適用于需要在集群外部訪問的服務,并且需要高可用性的服務。一般LoadBalancer是付費提供的。
  • ExternalName 類型的服務將將服務指向一個外部主機或域名。Pod 可以通過該主機或域名來訪問該服務。ExternalName 類型的服務適用于需要訪問外部服務的場景。

分享到:
標簽:Kubernetes
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定