kubernetes 创建nginx 容器

时间:2024-12-25 19:07:14

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

一个简单的nginx服务器

先决条件:你需要拥有的是一个部署完毕并可以正常运行的k8s集群。

1.拉 nginx 镜像,上传到私服

kubernetes 创建nginx 容器

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

1.创建rc :

kubernetes 创建nginx 容器

创建完后:

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

两个同时创建.

因为创建rc的时候 选择了内部服务。

如图:kubernetes 创建nginx 容器

我们尝试在 minion节点上 访问

nginx

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

kubernetes 创建nginx 容器

可以访问!

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

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

实践证明 :都可以!

注意:2个都叫  Cluster IP ,但是实际上 后面的是 容器的ip,签名的应该 是 另外的一个ip

kubernetes 创建nginx 容器

2个ip的区别 未来需要继续弄清楚。

另外:这三个IP都不是 minion的节点的 IP,192.168.179.135

kubernetes 创建nginx 容器

节点的IP 80 或81端口都不行的。

据此:尝试创建 一个外部服务

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

测试:

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

kubernetes 创建nginx 容器

以上三个IP都可以。

kubernetes 创建nginx 容器

重点:  minion节点的IP+ 32108 端口居然可以访问

kubernetes 创建nginx 容器

方案二:通过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

kubernetes 创建nginx 容器

注:

以上命令会让节点上的Docker从nginx这个image上启动一个容器监听80端口,此为一个pod。
而replicas=2则表示会起两个一模一样的pod。
k8s会确保你的应用是一直运行的,当容器运行失败时,k8s会自动重启容器,当整个节点失败时,会在另外一个健康的节点启动这个容器。
界面查看 是2个pods
kubernetes 创建nginx 容器
 kubernetes 创建nginx 容器

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

也可以界面: