kubernetes 創建nginx 容器
一個簡單的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 容器