k8s簡單介紹

k8s是什麼?html

它是用來解決容器部署,調度,伸縮等基礎的功能的軟件node

k8s的優勢?python

  • 易學:輕量級,簡單,容易理解
  • 便攜:支持公有云,私有云,混合雲,以及多種雲平臺
  • 可拓展:模塊化,可插拔,支持鉤子,可任意組合
  • 自修復:自動重調度,自動重啓,自動複製

docker中部署k8s架構nginx

 

 

基本概念web

 

 

  • 節點( Node ):一個節點是一個運行 Kubernetes 中的主機。
  • 容器組( Pod ):一個 Pod 對應於由若干容器組成的一個容器組,同個組內的容器共享一個存儲卷(volume)。
  • 容器組生命週期( pos-states ):包含全部容器狀態集合,包括容器組狀態類型,容器組生命週期,事件,重啓策略,以及 replication controllers。
  • Replication Controllers:主要負責指定數量的 pod 在同一時間一塊兒運行。
  • 服務( services ):一個 Kubernetes 服務是容器組邏輯的高級抽象,同時也對外提供訪問容器組的策略。
  • 卷( volumes ):一個卷就是一個目錄,容器對其有訪問權限。
  • 標籤( labels ):標籤是用來鏈接一組對象的,好比容器組。標籤能夠被用來組織和選擇子對象。
  • 接口權限( accessing_the_api ):端口,IP 地址和代理的防火牆規則。
  • web 界面( ux ):用戶能夠經過 web 界面操做 Kubernetes。
  • 命令行操做( cli ): kubecfg 命令

 ##咱們先把k8s跑起來在說,部署參考:http://www.javashuo.com/article/p-dnstgdac-bs.htmldocker

 =============================================================================api

 部署一個應用架構

kubectl run nginx \
--image=ghd493630393/nginx:v1 \
--port=80

這裏咱們經過kubectl run部署了一個應用,命名爲kubernetes-bootcamp ,如圖1-6 所示。app

Docker 鏡像經過-- image 指定。模塊化

一port 設置應用對外服務的端口。

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/kubernetes-bootcamp created

這裏Deployment 是Kubernetes 的術語,能夠理解爲應用。Kubermetes 還有一個重要術語Pod 。Pod 是容器的集合,一般會將緊密相關的一組容器放到一個Pod 中,同個Pod 中的所有容器共享IP 地址和Port 空間,也就

是說它們在個network namespace 中Pod 是Kubermetes 調度的最小單位,同- Pod 中的容器始終被起調度。經過 kubectl get pods來查看pod信息

[root@k8s-master opt]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-77d48d9dc5-kghmh 1/1 Running 0 20h
nginx-test-n828d 1/1 Running 0 5d18h
nginx-test-pmtfm 1/1 Running 0 5d18h

訪問應用

 

 

默認狀況下,全部Pod 只能在集羣內部訪問。對於上面這個例子,要訪問應用只能直接訪問容器的8080 端口。爲了可以從外部訪問應用,咱們須要將容器的8080 端口映射到節點的端口。

 

#將nginx暴露到外網
[root@k8s-master ~]# kubectl expose nginx \ > --type="NodePort" \ > --port 80

#查看映射到外網的端口(能夠看到外網端口是31833)

[root@k8s-master opt]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 101d
kubernetes-bootcamp NodePort 10.1.58.198 <none> 8080:30187/TCP 24h
nginx NodePort 10.1.150.252 <none> 80:31833/TCP 18h
nginx-test-n828d ClusterIP 10.1.221.205 <none> 80/TCP 5d18h
You have new mail in /var/spool/mail/root

#外網訪問的話須要經過node節點IP來訪問,查看這個svc在哪一個k8s集羣節點上

#kubectl describe pod nginx-77d48d9dc5-kghmh

相關文章
相關標籤/搜索