Docker(十三)--Docker k8s--pod管理-基本操作

目录

1. 简介

1.1 一些简单的入门小命令

2. pod基本操作

2.1 pod创建

2.2 pod删除,查看日志

3. service和deployment(控制器)

3.1 deployment基本操作

3.2 Pod扩容与缩容

3.3 expose暴露端口

3.3.1 ClusterIP默认类型暴露端口

3.3.2 NodePort类型暴露端口

3.4 更新pod镜像

3.5 回滚

3.6 删除


1. 简介

- Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。

  一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。

kubectl命令

1.1 一些简单的入门小命令

[root@server2 ~]# kubectl get pod   ##获取pod

[root@server2 ~]# kubectl  get ns   ##查看namespace
NAME              STATUS   AGE
default           Active   42h
kube-node-lease   Active   42h
kube-public       Active   42h
kube-system       Active   42h
[root@server2 ~]# kubectl get pod -n kube-system   ##查看相应namespace对应的pod,不加namespace就自动选择默认的namespace
NAME                              READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-4r9x6          1/1     Running   1          42h
coredns-7f89b7bc75-sxgkp          1/1     Running   1          42h
etcd-server2                      1/1     Running   4          42h
kube-apiserver-server2            1/1     Running   3          42h
kube-controller-manager-server2   1/1     Running   3          42h
kube-flannel-ds-amd64-9m29g       1/1     Running   1          36h
kube-flannel-ds-amd64-c2rc7       1/1     Running   1          41h
kube-flannel-ds-amd64-xnb9p       1/1     Running   1          36h
kube-proxy-dlxmm                  1/1     Running   1          36h
kube-proxy-mh677                  1/1     Running   1          36h
kube-proxy-p87p4                  1/1     Running   3          42h
kube-scheduler-server2            1/1     Running   4          42h
[root@server2 ~]# kubectl describe pod coredns-7f89b7bc75-4r9x6 -n kube-system  ##如果出错可以使用这条命令来查看错误信息,要标明对应的namespace
[root@server2 ~]# kubectl delete pod cDoredns-7f89b7bc75-4r9x6 -n kube-system   ##删除对应的pod

2. pod基本操作

2.1 pod创建

[root@server2 ~]# kubectl run -h    ##查看创建pod帮助
[root@server2 ~]# kubectl run nginx --image=myapp:v1   ##创建一个pod应用,nginx是名字,myapp是景象
        #--replicas=2   扩容参数  --record   记录参数
        # kubectl run nginx --image=nginx --replicas=2 --record #参数使用方法
[root@server2 ~]# kubectl get pod     ##查看pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          11s
[root@server2 ~]# kubectl get pod -n default    ##查看指定namespace的节点
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          25s
[root@server2 ~]# kubectl get pod -o wide      ##查看节点的具体信息
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE      NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          71s   10.244.2.3   server4   <none>           <none>


[root@server2 ~]# kubectl run demo --image=busyboxplus -it   ##交互式界面运行一个pod,ctrl+p+q退出可以通过kubectl attach demo -c demo -i -t重新进入
[root@server2 ~]# kubectl run demo --image=busyboxplus -it   ##再次进入

2.2 pod删除,查看日志

[root@server2 ~]# kubectl delete pod nginx   ##删除pod
pod "nginx" deleted
[root@server2 ~]# kubectl describe pod demo   ##查看详细描述
[root@server2 ~]# kubectl logs demo     ##查看日志

3. service和deployment(控制器)

3.1 deployment基本操作

[root@server2 ~]# kubectl create deployment nginx --image=myapp:v1  ##创建一个pod
deployment.apps/nginx created    ##生成一个新的deployment控制器的pod,删除之后会自动重新生成不同id的pod
[root@server2 ~]# kubectl get all
NAME                         READY   STATUS    RESTARTS   AGE
pod/demo                     1/1     Running   0          70m
pod/nginx-67f9d9c97f-mb6zb   1/1     Running   0          13s     ##id为mb6zb 

[root@server2 ~]# kubectl delete pod nginx-67f9d9c97f-mb6zb   ##删除pod后在查看
pod "nginx-67f9d9c97f-mb6zb" deleted
[root@server2 ~]# kubectl get pod    ##生成新的id的pod
NAME                     READY   STATUS    RESTARTS   AGE
demo                     1/1     Running   0          73m
nginx-67f9d9c97f-4stvr   1/1     Running   0          16s

[root@server2 ~]# kubectl delete deployment nginx     ##彻底删除deployment
[root@server2 ~]# kubectl get pod    ##删除成功
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          74m

3.2 Pod扩容与缩容

[root@server2 ~]# kubectl scale deployment --replicas=2 nginx  
[root@server2 ~]# kubectl scale deployment nginx --replicas=2   ##两种书写方式都可以
deployment.apps/nginx scaled
[root@server2 ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
demo                     1/1     Running   0          76m
nginx-67f9d9c97f-48gfz   1/1     Running   0          27s
nginx-67f9d9c97f-jh76r   1/1     Running   0          2s
[root@server2 ~]# kubectl scale deployment --replicas=4 nginx 
deployment.apps/nginx scaled
[root@server2 ~]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
demo                     1/1     Running   0          76m
nginx-67f9d9c97f-48gfz   1/1     Running   0          43s
nginx-67f9d9c97f-7gh4m   1/1     Running   0          3s
nginx-67f9d9c97f-hcd5z   1/1     Running   0          3s
nginx-67f9d9c97f-jh76r   1/1     Running   0          18s

3.3 expose暴露端口

- service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。

- 创建service
	$ kubectl expose deployment(控制器) nginx --port=80 --target-port=80
	此时pod客户端可以通过service的名称访问后端的两个Pod
	ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP

- 使用NodePort类型暴露端口,让外部客户端访问Pod(即真机也可以访问)
	$ kubectl edit svc nginx		//修改service的type为NodePort
	$ kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort		//也可以在创建service时指定类型
	NodePort: 在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过  NodeIP:NodePort 来访问该服务

3.3.1 ClusterIP默认类型暴露端口

[root@server2 ~]# kubectl expose deployment nginx --port=80   ##ClusterIP默认类型暴露端口
service/nginx exposed
[root@server2 ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   45h
nginx        ClusterIP   10.104.139.148   <none>        80/TCP    9s
[root@server2 ~]# curl 10.104.139.148
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@server2 ~]# curl 10.104.139.148/hostname.html
nginx-67f9d9c97f-48gfz
[root@server2 ~]# curl 10.104.139.148/hostname.html
nginx-67f9d9c97f-hcd5z
[root@server2 ~]# curl 10.104.139.148/hostname.html
nginx-67f9d9c97f-hcd5z
[root@server2 ~]# curl 10.104.139.148/hostname.html
nginx-67f9d9c97f-48gfz
[root@server2 ~]# kubectl describe svc nginx   ##查看deployment详细信息
[root@server2 ~]# kubectl get pod -n kube-system  -o wide ##查看namespace对应的所有pod详细信息

##server3和server4上同样可以访问到对应信息
[root@server3 ~]# curl 10.104.139.148/hostname.html  
[root@server4 ~]# curl 10.104.139.148/hostname.html

3.3.2 NodePort类型暴露端口

[root@server2 ~]# kubectl get svc     ##查看TYPE
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP   45h
nginx        ClusterIP   10.104.139.148   <none>        80/TCP    28m   ##ClusterIP
[root@server2 ~]# kubectl edit svc nginx   ##TYPE改成NodePort
[root@server2 ~]# kubectl get svc    ##80映射31147端口
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        45h
nginx        NodePort    10.104.139.148   <none>        80:31147/TCP   30m


##真机测试
[root@westos Desktop]# curl 172.25.13.2:31147
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-48gfz
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-48gfz
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-hcd5z
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-hcd5z
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-hcd5z
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-hcd5z
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html
nginx-67f9d9c97f-hcd5z
[root@westos Desktop]# curl 172.25.13.2:31147/hostname.html

3.4 更新pod镜像

[root@server2 ~]# kubectl set image deployment nginx myapp=myapp:v2  ##更新到v2
[root@server2 ~]# kubectl rollout history deployment nginx    ##查看更新记录

3.5 回滚

$ kubectl rollout history deployment nginx	//查看历史版本
$ kubectl rollout undo deployment nginx --to-revision=1	//回滚版本
[root@server2 ~]# kubectl rollout history deployment nginx
[root@server2 ~]# kubectl rollout undo deployment nginx --to-revision=1   ##回滚之前版本
deployment.apps/nginx rolled back
[root@server2 ~]# kubectl rollout history deployment nginx
deployment.apps/nginx 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
[root@server2 ~]# kubectl get pod   ##rs值变成版本1的rs值
NAME                     READY   STATUS    RESTARTS   AGE
demo                     1/1     Running   0          136m
nginx-67f9d9c97f-mv6n2   1/1     Running   0          22s
nginx-67f9d9c97f-zgpgh   1/1     Running   0          23s
[root@server2 ~]# kubectl describe deployments.apps nginx 

3.6 删除

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,它可以将应用程序及其依赖项打包到一个可移植的容器中,以便在不同的环境中运行。Docker Compose是一个工具,它使用YAML文件定义并管理多个Docker容器的运行配置。而Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。 Docker主要解决的是应用程序打包和隔离的问题,它将应用程序及其依赖项打包到一个独立的容器中,并提供了一种轻量级的虚拟化技术。Docker Compose则是用于管理多个Docker容器的工具,可以通过一个YAML文件定义多个容器的配置和依赖关系,方便一次性启动和管理多个容器Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。它可以管理大规模的容器集群,提供高可用性、自动伸缩和负载均衡等功能。Kubernetes使用Pod作为最小的调度单元,一个Pod可以包含一个或多个容器,并共享网络和存储资源。 总结一下,Docker提供了容器化技术,Docker Compose是用于管理多个Docker容器的工具,而Kubernetes是一个容器编排系统,用于自动化部署和管理容器化应用程序。它们之间的区别在于功能和应用场景的不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [如何将应用从docker-compose迁移到k8s中](https://blog.csdn.net/monarch91/article/details/125917743)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker-compose转为k8s配置文件](https://blog.csdn.net/jimo_lonely/article/details/126003100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值