1.pod介绍
<1> pod是可以创建和管理kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。
<2> 一个Pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC,Network和UTC namespace。
2.pod的创建
pod分为俩类,一类是自主式pod,另一类是由控制器来控制的pod。
kubectl get pod ##查看pod
kubectl get pod -o wide ##查看Pod的详细信息
kubectl get pod -n kube-system
kubectl get pod --all -namespaces
上面我列出了一些pod常用的命令,详细的内容查看:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
接着我们来看一下自主式pod
kubectl run nginx --image=nginx ##创建自主式pod
自主式pod被删除之后就彻底删除了。
接着我们来看一下deployment控制器式pod
kubectl create deployment myapp --image=nginx ##创建Pod
删除deployment控制器式的pod时,当一个Pod被删除了,replicas会自动拉起一个副本,创建一个新的pod。replicas控制器会一直维护着pod的运行,当pod出现故障时,他会自动出击。
想要彻底删除pod,需要将控制器删除。
kubectl delete deployment.apps myapp ##删除myapp控制器
3. pod的扩容与缩容:
kubectl create deployment myapp --image=nginx ##先创建一个pod
kubectl scale deployment myapp --replicas=2 ##将pod拉伸为2个
kubectl get pod ##查看一下pod
kubectl scale deployment myapp --replicas=10 ##将pod拉伸为10个
注:上面的kubectl 命令我们都是在普通用户kubeadm下运行的,在生产环境中我们用普通用户比较的安全。
如果想要在root用户下执行kubectl ,则:
mkdir .kube ##root用户在主目录下创建一个.kube目录
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config ##将admin.conf文件复制到.kube目录下并改名字为config
4.service
pod集群内部任意节点可以访问Pod,但集群外部无法直接访问。
service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略,一般把service称为微服务。service用来暴露pod的访问接口,使外部用户可以访问pod,并且他还可以实现负载均衡。
创建service:
kubectl expose deployment myapp --port=80 --target-port=80
此时pod客户端可以通过service的名称访问后端的俩个pod。ClusterIP:默认类型,自动分配一个仅集群内部可以访问的虚拟IP。
测试访问一下:
因为他是ClusterIP类型,只能集群内部去访问,所以我们得进入到集群里面去。
我们在harbor对应主机创建一个阿里云镜像加速器
cd /etc/docker ##进入到docker目录
vim daemon.js0n ##编辑文件
systemctl restart docker ##重启docker服务
更新pod镜像
回滚
kubectl rollout history deployment myapp ##查看历史版本
kubectl rollout undo deployment nginx --to-revision=1 ##回滚版本