1. 程式人生 > >kubernetes 創建nginx 容器

kubernetes 創建nginx 容器

lba ide als ice dba ylabel docke -type ini

一個簡單的nginx服務器

先決條件:你需要擁有的是一個部署完畢並可以正常運行的k8s集群。

1.拉 nginx 鏡像,上傳到私服

技術分享圖片

方案一:使用界面 k8s dashboard 創建

1.創建rc :

技術分享圖片

創建完後:

技術分享圖片

技術分享圖片

兩個同時創建.

因為創建rc的時候 選擇了內部服務。

如圖:技術分享圖片

我們嘗試在 minion節點上 訪問

nginx

方式一: Cluster IP+port 註意配置的是 targetPort 即容器內的端口是80

技術分享圖片

可以訪問!

方式二:通過 pod的 Cluster IP+containerPort

技術分享圖片

技術分享圖片

技術分享圖片

實踐證明 :都可以!

註意:2個都叫 Cluster IP ,但是實際上 後面的是 容器的ip,簽名的應該 是 另外的一個ip

技術分享圖片

2個ip的區別 未來需要繼續弄清楚。

另外:這三個IP都不是 minion的節點的 IP,192.168.179.135

技術分享圖片

節點的IP 80 或81端口都不行的。

據此:嘗試創建 一個外部服務

技術分享圖片

技術分享圖片

技術分享圖片

測試:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

以上三個IP都可以。

技術分享圖片

重點: minion節點的IP+ 32108 端口居然可以訪問

技術分享圖片

方案二:通過yaml文件創建 rc和svc 即rc和service 本方法沒驗證,但是yaml是從 界面裏拷出來的。理論上可以的

1.創建rc

技術分享圖片 技術分享圖片
Replication Controller        {5}
        
kind    :    ReplicationController
        
apiVersion    :    v1
        
    metadata        {8}
        
name    :    nginx-hui
        
namespace    :    default
        
selfLink    :    /api/v1/namespaces/default/replicationcontrollers/nginx-hui
        
uid    :    80f386f8-c206-11e7-859d-000c29e983de
        
resourceVersion    :    55282
        
generation    :    1
        
creationTimestamp    :    2017-11-05T08:51:24Z
        
    labels        {1}
        
app    :    nginx-hui
        
    spec        {3}
        
replicas    :    2
        
    selector        {1}
        
app    :    nginx-hui
        
    template        {2}
        
    metadata        {3}
        
name    :    nginx-hui
        
creationTimestamp    :    null
        
    labels        {1}
        
app    :    nginx-hui
        
    spec        {5}
        
    containers        [1]
        
    0        {6}
        
name    :    nginx-hui
        
image    :    192.168.179.133:80/nginx
        
    resources        {0}
    (empty object)
        
terminationMessagePath    :    /dev/termination-log
        
imagePullPolicy    :    Always
        
    securityContext        {1}
        
privileged    :    false
        
restartPolicy    :    Always
        
terminationGracePeriodSeconds    :    30
        
dnsPolicy    :    ClusterFirst
        
    securityContext        {0}
    (empty object)
        
    status        {5}
        
replicas    :    2
        
fullyLabeledReplicas    :    2
        
readyReplicas    :    2
        
availableReplicas    :    2
        
observedGeneration    :    1
技術分享圖片

2.創建svc

技術分享圖片 技術分享圖片
Service        {5}
        
kind    :    Service
        
apiVersion    :    v1
        
    metadata        {7}
        
name    :    nginx-hui
        
namespace    :    default
        
selfLink    :    /api/v1/namespaces/default/services/nginx-hui
        
uid    :    80fe1ae1-c206-11e7-859d-000c29e983de
        
resourceVersion    :    55241
        
creationTimestamp    :    2017-11-05T08:51:24Z
        
    labels        {1}
        
app    :    nginx-hui
        
    spec        {5}
        
    ports        [1]
        
    0        {4}
        
name    :    tcp-81-80-8yb4e
        
protocol    :    TCP
        
port    :    81
        
targetPort    :    80
        
    selector        {1}
        
app    :    nginx-hui
        
clusterIP    :    10.254.239.9
        
type    :    ClusterIP
        
sessionAffinity    :    None
        
    status        {1}
        
    loadBalancer        {0}
    (empty object)
技術分享圖片

實際是在 服務器上 master上 創建2個yaml文件

rc.yaml 和svc.yaml

然後用

kubectl create -f xx.yaml
分別創建 rc和service

方案三:下面是采用命令方式創建:(未成功)

2. 在Master節點上使用kubectl命令來啟動一個運行著nginx服務器的容器:

kubectl run my-nginx --image=192.168.179.133:80/nginx --replicas=2 --port=80

技術分享圖片

註:

以上命令會讓節點上的Docker從nginx這個image上啟動一個容器監聽80端口,此為一個pod。 而replicas=2則表示會起兩個一模一樣的pod。 k8s會確保你的應用是一直運行的,當容器運行失敗時,k8s會自動重啟容器,當整個節點失敗時,會在另外一個健康的節點啟動這個容器。 界面查看 是2個pods 技術分享圖片

技術分享圖片

3.通過端口將應用連接到Internet上

以下命令將上一步驟中的nginx容器連接到公網中:

kubectl expose rc my-nginx --port=80 --type=LoadBalancer

註:rc即Replication Controller,上一步驟中的命令其實會自動創建一個名為my-nginx的rc來確保pod的數量維持在2個。

實際測試中 沒有這個rc 叫my-nginx

使用以下命令來查看rc: $ kubectl get rc

也可以界面:

來源: https://www.cnblogs.com/hutuchong/p/7787888.html

kubernetes 創建nginx 容器