目录
命令中--replicas=2 启动2个实例,--port=80 运行在k8s的80端口上,没有进行映射端口
[root@yn101-22 ~]# kubectl run nginx --image=nginx --replicas=2 --port=80#输出如下: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 created
[root@yn101-22 ~]# kubectl get pods#输出如下:NAME READY STATUS RESTARTS AGEnginx-5578584966-2tkmz 1/1 Running 0 79snginx-5578584966-8r8jt 1/1 Running 0 79s
[root@yn101-22 ~]# kubectl get deployment#输出如下:NAME READY UP-TO-DATE AVAILABLE AGEnginx 2/2 2 2 2m17s
使用负载均衡模式发布服务,让用户可以访问。暴露一个名称为nginx的deployment,暴露80端口,类型是负载均衡
[root@yn101-22 ~]# kubectl expose deployment nginx --port=80 --type=LoadBalancer#输出如下:service/nginx exposed
[root@yn101-22 ~]# kubectl get service#输出如下NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9hnginx LoadBalancer 10.106.9.160 <pending> 80:31176/TCP 2m9s
其中nginx的port:80为k8s的端口,31176为暴露出来的端口
[root@yn101-22 ~]# kubectl get service#输出如下NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9hnginx LoadBalancer 10.106.9.160 <pending> 80:31176/TCP 2m9s#查看详情[root@yn101-22 ~]# kubectl describe service nginxName: nginxNamespace: defaultLabels: run=nginxAnnotations: <none>Selector: run=nginxType: LoadBalancerIP: 10.106.9.160 #k8s内部ip地址Port: <unset> 80/TCP #k8s内部端口TargetPort: 80/TCPNodePort: <unset> 31176/TCP #node端口Endpoints: 192.168.114.193:80,192.168.170.4:80Session Affinity: NoneExternal Traffic Policy: ClusterEvents: <none>
master在默认情况下不会运行pod,所以在node节点访问nginx进行验证,也可使用docker ps查看运行的容器。
服务高可用测试:使用docker rm -f 容器id删除容器,删除后容器又自动创建。
#访问测试http://192.168.101.31:31176/http://192.168.101.32:31176/
容器运行在pod上,pod运行在deployment上,停止服务,必须先停止deployment
删除已部署的服务
[root@yn101-22 ~]# kubectl delete deployment nginx#输出如下:deployment.apps "nginx" deleted
删除已发布的服务
[root@yn101-22 ~]# kubectl delete service nginx#输出如下:service "nginx" deleted