pod管理
- Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群 中运行的一个进程,每个pod都有一个唯一的ip。
- 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间 共享IPC、Network和UTC namespace。
1.Pod命令 (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands)
创建pod任务(如果使用控制器建立的话删除时先删除控制器)
# kubectl create deployment myapp --image=nginx 创建
# kubectl get pod 查看
# kubectl delete pod myapp-6d8d776547-4w4ph 删除
# kubectl delete deployment 名称 用控制器管理地pod删除
# kubectl describe pod 描述
# kubectl get pod -n kube-system -o wide 资源配置清单
2.扩容与缩容(集群内部任意可以访问pod,外部不可以)
# kubectl scale deployment myapp --replicas=10 扩容
# kubectl scale deployment myapp --replicas=5 缩容
# kubectl get pod -o wide
service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,
一般把service称为微服务
创建service
# kubectl expose deployment nginx --port=80 --target-port=80
# kubectl describe svc nginx
此时pod客户端可以通过service的名称访问后端的两个Pod
ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP
测试:
下载镜像busyboxplus
# kubectl run demo --image=busyboxplus -it 运行busybox去测试
# curl 10.100.109.60 此vip使用 kubectl describe svc nginx 获取
2.更新pod镜像
为了方便观察我们这里使用myapp来测试进行版本更新以及回滚
上传myapp的镜像到私有仓库,在我们服务端配置好daemo.json
# kubectl set image deployment nginx nginx=myapp:v1 --record 更新将nginx更新为myapp镜像,并且记录
# kubectl rollout history deployment nginx 查看版本历史
测试:
# kubectl attach demo -it
# curl 10.100.109.60
版本更新
版本回滚
# kubectl rollout history deployment nginx 查看历史版本
# kubectl rollout undo deployment nginx --to-revision=6 将版本V2回退到V1
以上pod只有在集群内部可以访问,如果集群外部需要访问需要打开NodeNort
# kubectl edit svc nginx 接口type改为NodePort
# kubectl expose deployment nginx --port=80 --target-port=80 -- type=NodePort 或者创建server时指定
测试:在外部网络访问
# curl 172.25.254.10:32193
# curl 172.25.254.11:32193