Kubernetes部署容器化应用nginx、tomcat

1.在k8s集群中部署一个nginx 

1.master节点创建任务(实际是由docker拉取Nginx镜像)
[root@k8smaster ~]# kubectl create deployment nginx --image=nginx(名称可先在node节点上通过docker search nginx找)
deployment.apps/nginx created
可通过以下两个命令查看镜像是否下载完毕
[root@k8smaster ~]# kubectl get pods(master执行)
NAME                     READY   STATUS    RESTARTS   AGE
nginx-85b98978db-nwrhr   1/1     Running   0          74s
此处注意,若创建控制器后查看pod长时间都是pending或其他状态,可能是docker加速器的问题,导致镜像没有成功拉取。
加速器举例:
[root@k8smaster ~]# vim /etc/docker/daemon.json 

{
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "exec-opts": ["native.cgroupdriver=systemd"]
}
https://gg3gwnry.mirror.aliyuncs.com


[root@k8smaster ~]# kubectl get service
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        5d6h

[root@k8snode ~]# docker images(node节点执行,可看到nginx)
REPOSITORY                                           TAG       IMAGE ID       CREATED         SIZE
nginx                                                latest    3f8a00f137a0   6 days ago      142MB
flannel/flannel-cni-plugin                           v1.1.2    7a2dcab94698   2 months ago    7.97MB
flannel/flannel                                      v0.20.2   b5c6c9203f83   2 months ago    59.6MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.23.1   b46c42588d51   14 months ago   112MB
registry.aliyuncs.com/google_containers/pause        3.6       6270bb605e12   17 months ago   683kB
2.暴露容器端口,使集群间可访问、通信
[root@k8smaster ~]# kubectl expose deployment nginx --port=80 --type=NodePort
此时再查service可看到nginx
[root@k8smaster ~]# kubectl get service
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        5d6h
nginx        NodePort    10.108.5.189   <none>        80:32675/TCP   24h
上述的80端口是node之间互相通信使用的,后面的32675是生成的端口,默认是30000以上,这个是对外暴露端口,是可以在本机浏览器访问的

访问master本机IP+端口:http://192.168.137.20:32675

 而由于这个nginx的docker镜像实际上是通过master运行在node机器上的,如下:

[root@k8snode ~]# docker ps -a |grep nginx(node机器执行)
0f5b7ae82604   nginx                                                "/docker-entrypoint.…"   32 hours ago   Up 32 hours                         k8s_ngin_nginx-85b98978db-ptctw_default_ffd9c16f-a22f-4372-b36a-5ecb79c61cf1_0
04a623a252ec   registry.aliyuncs.com/google_containers/pause:3.6    "/pause"                 32 hours ago   Up 32 hours                         k8s_POD_nginx-85b98978db-ptctw_default_ffd9c16f-a22f-4372-b36a-5ecb79c61cf1_0

所以此nginx应用用node机器的IP一样能访问:http://192.168.137.21:32675

 其他:

1.删除nginx控制器(通过kubectl get deployment找到)
[root@k8smaster ~]# kubectl delete deployment nginx
2.删除pod(通过kubectl get pod找到)
[root@k8smaster ~]# kubectl delete pod nginx-85b98978db-nwrhr
3.删除service(通过kubectl get service找到)
[root@k8smaster ~]# kubectl delete service nginx

2.在k8s集群中部署一个tomcat

1.在node节点上搜索tomcat镜像
[root@k8snode ~]# docker search tomcat
NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                                Apache Tomcat is an open source implementati…   3490      [OK]       
tomee                                 Apache TomEE is an all-Apache Java EE certif…   102       [OK]       

2.在master上创建tomcat控制器
[root@k8smaster ~]# kubectl create deployment tomcat --image=tomcat
deployment.apps/tomcat created
查看状态
[root@k8smaster ~]# kubectl get deployment
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
nginx    1/1     1            1           6d4h
tomcat   0/1     1            0           29s
[root@k8smaster ~]# kubectl get pod
NAME                      READY   STATUS              RESTARTS   AGE
nginx-85b98978db-ptctw    1/1     Running             0          5d20h
tomcat-655b94657b-x5ppq   0/1     ContainerCreating   0          16s
容器正在创建中,等待一会。。。
[root@k8smaster ~]# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
nginx-85b98978db-ptctw    1/1     Running   0          5d20h
tomcat-655b94657b-x5ppq   1/1     Running   0          2m
[root@k8smaster ~]# kubectl get deployment
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
nginx    1/1     1            1           6d4h
tomcat   1/1     1            1           2m10s
pod显示running状态,创建成功。

3.暴露容器端口,使集群间可访问、通信
[root@k8smaster ~]# kubectl expose deployment tomcat --port=8080 --type=NodePort
service/tomcat exposed
[root@k8smaster ~]# kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          7d5h
nginx        NodePort    10.108.5.189    <none>        80:32675/TCP     3d
tomcat       NodePort    10.102.47.228   <none>        8080:30584/TCP   7s

访问master本机IP+端口:http://192.168.137.20:30584

用node机器IP+端口 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值