Kubernetes(K8S)(二)——Kubernetes的Pod管理


• Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。
• 一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。

在这里插入图片描述

1.相关配置

kubectl命令:https://kubernetes.io/docs/reference/generated/kubectl/kubectlcommands
1.配置每个节点的私有仓库,及每个节点都有证书
在server2与server3上:
vim /etc/docker/daemon.json

{  
  "registry-mirrors": ["https://reg.red.org"], ##添加私有仓库
  "exec-opts": ["native.cgroupdriver=systemd"],  
  "log-driver": "json-file",  
  "log-opts": {    
    "max-size": "100m"  
  },  
  "storage-driver": "overlay2",  
  "storage-opts": [    
    "overlay2.override_kernel_check=true"  
  ] 
}

systemctl restart docker重启docker引擎
在这里插入图片描述
在这里插入图片描述


2.创建自主式pod

# docker load -i nginx.tar
$ kubectl run nginx --image=nginx --replicas=2 --record
$ kubectl get pod查看pod的运行状态
$ kubectl get pod -o wide查看pod的运行位置
$ kubectl logs demo查看日志输出
$ kubectl describe pod demo查看pod的详细信息

注意:集群内部任意节点可以访问Pod,但集群外部无法直接访问。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.使用控制器部署pod+删除pod

$ kubectl create deployment myapp --image=nginx使用控制器部署pod
$ kubectl delete pod myapp-687598b8b4-ch84w删除pod
$ kubectl delete deployment.apps myapp彻底删除

在这里插入图片描述


4.Pod扩容与缩容

$ kubectl create deployment myapp --image=nginx
$ kubectl scale deployment myapp --replicas=2
$ kubectl scale deployment myapp --replicas=5手动扩容
$ kubectl scale deployment myapp --replicas=2手动缩容

在这里插入图片描述
在这里插入图片描述


5.service设定

service是一个抽象概念,定义了一个服务的多个pod逻辑合集和访问pod的策略, 一般把service称为微服务。
创建service:
$ kubectl expose deployment nginx --port=80 --target-port=80 此时pod客户端可以通过service的名称访问后端的两个Pod
ClusterIP: 默认类型,自动分配一个仅集群内部可以访问的虚拟IP

kubectl expose deployment myapp --port=80 --target-port=80暴露端口
kubectl get svc查看service
kubectl describe svc myapp
kubectl get pod -o wide
kubectl get pod --show-labels

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


6.pod镜像更新和回滚

更新pod镜像 $ kubectl set image deployments myapp nginx=myapp:v1 --record
查看历史版本 $ kubectl rollout history deployment nginx
回滚版本 $ kubectl rollout undo deployment myapp --to-revision=2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


7. 使用NodePort类型暴露端口,让外部客户端访问Pod

$ kubectl edit svc myapp 修改service的type为NodePort
$ kubectl expose deployment nginx --port=80 --target-port=80 -type=NodePort 也可以在创建service时指定类型

NodePort: 在ClusterIP基础上为Service在每台机器上绑定一个端口,这样就可以通过NodeIP:NodePort 来访问该服务

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章