kubernetes集群部署nginx

一.kubernetes安装配置

kubernetes安装配置(centos7)

kubernetes安装配置参考一

kubernetes安装配置参考二

二.集群部署nginx

1.部署应用

### 方法一:命令方式

[root@master ~]# kubectl run nginx-cw --image=nginx --port=8801
    解析说明:
        kubectl run 部署应用
        命名       nginx-cw (名称只能是小写字母) 
        Docker镜像      --image 指定。
        服务端口        --port 指定。
        指定容器组        --replicas=3  (默认为1)
        运行结果:
            kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
            deployment.apps/nginx-cw created

### 方法二:文件方式

[root@master ~]# vi nginx-text.yml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: nginx
        spec:
          restartPolicy: Always
          containers:
          - name: nginx
            image: nginx:latest
[root@master ~]# kubectl apply -f nginx-text.yml
    deployment.extensions/nginx created

nginx-text.yml文件解析

(1).apiVersion 是当前配置格式的版本。
(2).kind 是要创建的资源类型,这里是 Deployment。
(3) metadata 是该资源的元数据,name 是必需的元数据项。
(4) spec 部分是该 Deployment 的规格说明。
(5) replicas 指明副本数量,默认为 1。
(6) template 定义 Pod 的模板,这是配置文件的重要部分。
(7) metadata 定义 Pod 的元数据,至少要定义一个 label。label 的 key 和 value 可以任意指定。
(8) spec 描述 Pod 的规格,此部分定义 Pod 中每一个容器的属性,name 和 image 是必需的。

2.查看节点状态

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   24h     v1.14.2
node01   Ready    <none>   5h29m   v1.14.2
node02   Ready    <none>   28m     v1.14.2

3.查看pod状态

(1).列出所有pod
    [root@master ~]# kubectl get pods
        NAME                       READY   STATUS    RESTARTS   AGE
        nginx-cw-f447c94d4-rbjkn   1/1     Running   0          19m
(2).列出所有pod并携带pod的IP及所在节点
    [root@master ~]# kubectl get pods -o wide
        NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
        nginx-cw-f447c94d4-rbjkn   1/1     Running   0          20m   10.244.3.2   node02   <none>           <none>

4.查看副本数

[root@master ~]# kubectl get deployments
    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-cw   1/1     1            1           8m59s

5.查看deployment详细信息

[root@master ~]# kubectl describe deployments
    Name:                   nginx-cw
    Namespace:              default
    CreationTimestamp:      Thu, 30 Apr 2020 22:08:12 +0800
    Labels:                 run=nginx-cw
    Annotations:            deployment.kubernetes.io/revision: 1
    Selector:               run=nginx-cw
    Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
    StrategyType:           RollingUpdate
    MinReadySeconds:        0
    RollingUpdateStrategy:  25% max unavailable, 25% max surge
    Pod Template:
      Labels:  run=nginx-cw
      Containers:
       nginx-cw:
        Image:        nginx
        Port:         8801/TCP
        Host Port:    0/TCP
        Environment:  <none>
        Mounts:       <none>
      Volumes:        <none>
    Conditions:
      Type           Status  Reason
      ----           ------  ------
      Available      True    MinimumReplicasAvailable
      Progressing    True    NewReplicaSetAvailable
    OldReplicaSets:  <none>
    NewReplicaSet:   nginx-cw-f447c94d4 (1/1 replicas created)
    Events:
      Type    Reason             Age   From                   Message
      ----    ------             ----  ----                   -------
      Normal  ScalingReplicaSet  10m   deployment-controller  Scaled up replica set nginx-cw-f447c94d4 to 1

6.查看集群基本组件状态

[root@master ~]# kubectl get cs
    NAME                 STATUS    MESSAGE             ERROR
    scheduler            Healthy   ok                  
    controller-manager   Healthy   ok                  
    etcd-0               Healthy   {"health":"true"}

7.发布

[root@master ~]# kubectl expose deployment nginx-cw --port=8881 --target-port=8881 --type=NodePort
    service/nginx-cw exposed
[root@master ~]# kubectl expose deployment nginx-test --port=8881 --target-port=80 --type=NodePort
service/nginx-test exposed
[root@master ~]# kubectl get services
    NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP          25h
    nginx-cw     NodePort    10.111.133.96    <none>        8881:30997/TCP   32m
    nginx-test   NodePort    10.108.115.115   <none>        8881:32684/TCP     9s

--target-port   指定nginx服务端口
--port            指定nginx暴露端口
例: --port=88 --target-port=80        指定将nginx服务的80端口暴露为88端口

###注意:

(错误写法)
    kubectl expose deployment nginx-cw --port=8881 --target-port=8881 --type=NodePort 
(正确写法)
    kubectl expose deployment nginx-test --port=8881 --target-port=80 --type=NodePort

如上所示,nginx-cw是访问不了的,由于nginx内部无8881端口,故浏览器无法访问到nginx服务,--target-port一定是服务提供者的端口,切记不能写错。

8.浏览器访问

(1)外部访问nodeIP加32684端口

(2).内部访问10.108.115.115的IP,暂时原因未知,可能是网络不通

文章标题:kubernetes集群部署nginx

发布时间:2020-04-30, 16:25:51

最后更新:2020-04-30, 16:25:51