kubernetes 创建nginx 容器

 

参考:http://blog.csdn.net/qq1010885678/article/details/48832067

 

一个简单的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
View Code

 

     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)
View Code

     实际是在 服务器上  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
 

 也可以界面:

 

posted on 2017-11-05 17:13  杭州糊涂虫  阅读(10260)  评论(0编辑  收藏  举报

导航