k8s-app-node-port
K8S 应用部署之 NodePort
使用 run
命令直接创建一个简单的 deployment
:
kubectl run nginx-deployment –image=nginx
需要控制台会输出一些提示:
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. |
提示, run
deployment
的方式未来会被舍弃掉.
查看 pods:
第一个即为刚创建的 pod. 第二个是之前测试 yml 方式创建的 pod(只是一个 pod, 具体参照 nginx-pod.yml 文件)
查看 deployments
:
kubectl get deployment -o wide
查看 svc
:
kubectl get svc
目前还只有一个之前 kubernetes
这一个.
查看 rs
:
kubectl get rs
负载均衡
- 修改
replicas
的方式。
1 | kubectl scale --replicas=2 deployment/nginx-deployment |
查验 rs
和 pods
:
查看 deployments
, 也变为2个了 (kubectl get deployments
)
注意: 这时删除 pod
时,直接删除 pod 会触发 replicas 的确保机制, 从而导致删除 pod 失败. 正确做法是直接删除 pod 对应的 deployment.
- 通过 svc
1 | kubectl expose deployment nginx-deployment --port=30001 --target-port=80 |
kubectl get pod -o wide
输出
1 | NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES |
Cluster-ip 是集群内部分配的地址,通过 curl 10.100.28.184:30001 即可访问.
此时, 还不能在集群外访问内部的服务.
对外服务
编辑 deployment
的类型:
kubectl edit svc nginx-deployment
tpye
默认是 ClusterIP.
保存后, 可以看到控制台输出: service/nginx-deployment edited
注:保存后,在无语法错误的前提下,该文件会被修改,如,里面的 nodePort: 30260, 即为集群对外暴露的访问端口,30001 是集群内访问端口号.
1 | # 查看 svc: |
当然, pod/deployment 也可以 edit.
kubectl edit deployment nginx-deployment
kubectl edit pod nginx-pod
测试访问:
资源对象创建方式
Run
命令,通常是通过命令行方式去创建。
kubectl run nginx-deployment –image=nginx:1.7.9 –replicas=2
Apply
方式
kubectl apply -f nginx.yaml
Nginx.yml
文件内容:
1 | apiVersion: extensions/v1beta1 #api的版本 |
kubectl apply
不但能够创建 Kubernetes 资源,也能对资源进行更新。
Kubernets 还提供了几个类似的命令,例如 kubectl create
、kubectl replace
、kubectl edit
和 kubectl patch
比较
- 基于命令的方式:
简单直观快捷,上手快。
适合临时测试或实验
基于配置文件的方式:
配置文件描述了 具体是什么,即应用最终要达到的状态。
配置文件提供了创建资源的模板,能够重复部署。
可以像管理代码一样管理部署。
适合正式的、跨环境的、规模化部署。
这种方式要求熟悉配置文件的语法,有一定难度.
版权声明:
本文由Lomo创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,
转载请注明作者及出处,本文作者为Lomo,本文标题为k8s-app-node-port.