參考:http://blog.csdn.net/qq1010885678/article/details/48832067nginx
一個簡單的nginx服務器api
先決條件:你須要擁有的是一個部署完畢並能夠正常運行的k8s集羣。服務器
1.拉 nginx 鏡像,上傳到私服session
方案一:使用界面 k8s dashboard 建立app
1.建立rc :tcp
建立完後:ide
兩個同時建立.測試
由於建立rc的時候 選擇了內部服務。ui
如圖:spa
咱們嘗試在 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
注:
3.經過端口將應用鏈接到Internet上
如下命令將上一步驟中的nginx容器鏈接到公網中:
kubectl expose rc my-nginx --port=80 --type=LoadBalancer
注:rc即Replication Controller,上一步驟中的命令其實會自動建立一個名爲my-nginx的rc來確保pod的數量維持在2個。
實際測試中 沒有這個rc 叫my-nginx
也能夠界面: