其他分享
首页 > 其他分享> > k8s pod 管理

k8s pod 管理

作者:互联网

Pod是Kubernetes调度的最小单元。一个Pod可以包含一个或多个容器,因此它可以被看作是内部容器的逻辑宿主机。Pod的设计理念是为了支持多个容器在一个Pod中共享网络和文件系统。因此处于一个Pod中的多个容器共享以下资源:

pod常用操作

  

[root@server2 calio]# kubectl get namespaces 
NAME              STATUS   AGE
default           Active   4d
kube-node-lease   Active   4d
kube-public       Active   4d
kube-system       Active   4d
metallb-system    Active   23h

创建demo pod

[root@server2 calio]# kubectl run demo --image=myapp:v1
pod/demo created

查看 pod

[root@server2 ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          116s

查看指定 pod

[root@server2 ~]# kubectl  describe pod demo

 

列出Pod以及运行Pod节点信息。

[root@server2 ~]# kubectl  get pod -o wide
NAME   READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
demo   1/1     Running   0          4m36s   10.244.22.0   server4   <none>           <none>

查看flannel环境

[root@server2 ~]# cat /var/run/flannel/subnet.env 
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

删除demo pod

[root@server2 ~]# kubectl delete pod demo 
pod "demo" deleted

部署两个以demo命名的pod

[root@server2 ~]# kubectl  create  deployment  demo --image=myapp:v1 --replicas=2
[root@server2 ~]# kubectl  get pod -o wide

 

查看所有资源信息

 子节点被删除后,rs会自动生成新的副本替代,保证规定节点数量

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。

[root@server2 ~]# kubectl delete pod/demo-5b4fc8bb88-cjbgv
[root@server2 ~]# kubectl  get pod -o wide

 

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

测试负载均衡

[root@server2 ~]# kubectl  expose  deployment demo  --port=80 --target-port=80
[root@server2 ~]# kubectl get all
[root@server2 ~]# curl 10.109.59.20/hostname.html

 

查看demo资源信息

[root@server2 ~]# kubectl  describe  svc demo 
##输出指定的一个/多个资源的详细信息。

 查看replicasets信息

[root@server2 ~]# kubectl  get rs
NAME              DESIRED   CURRENT   READY   AGE
demo-5b4fc8bb88   2         2         2       33m

集群拉伸,修改pod内节点部署数量

[root@server2 ~]# kubectl  scale  deployment  demo  --replicas=5
deployment.apps/demo scaled

 

版本升级

[root@server2 ~]# kubectl  set image  deployment demo myapp=myapp:v2

版本回滚

[root@server2 ~]# kubectl  rollout  undo deployment  demo --to-revision=1
deployment.apps/demo rolled back

 

删除 demo pod

kubernetes 可能会产生垃圾或者僵尸pod,在删除rc的时候,相应的pod没有被删除,手动删除pod后会自动重新创建,这时一般需要先删除掉相关联的resources

[root@server2 ~]# kubectl get deployment

[root@server2 ~]# kubectl delete deployment demo 

[root@server2 ~]# kubectl get pod

资源配置清单

在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单

资源清单格式

参数名(字段类型)说明
api-version(String)k8s api的版本,目前基本是V1,可以使用kubectl api-versions命令查询
kind(String)yaml文件定义的资源类型和角色,,比如Pod
metadata(Object)元数据对象,固定值就写metadata
metadata.name(String)元数据对象的名字,由我们编写,如定义Pod的名
metadata.namespace元数据对象的命名空间,由我们自身定义
spec(Object)详细定义对象,固定值就写Spec
spec.containers[](list)Spec对象的容器列表定义,是个列表
spec.containers[].name(String)定义容器的名字
spec.containers[].image(String)容器用到的镜像名称

 资源清单可以一次性创建多个容器,组内成员共享网络

[root@server2 pot]# kubectl apply -f pots.yaml 
pod/pod-example created

[root@server2 pot]# cat pots.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: myapp
    image: myapp:v1

  - name: busybox
    image: busyboxplus:latest
    tty: true
    stdin: true

[root@server2 pot]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
pod-example   2/2     Running   0          2m55s

成员可以相互通信
进入交互界面,查看ip,直接访问本地,可以获取nginx成员的默认发布页面,说明共用一个ip

[root@server2 pot]# kubectl attach pod-example -c busybox -it
进入busybox 内部查看

 

 设置cpu以及内存大小

[root@server2 pot]# cat pots.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: myapp
    image: myapp:v1
    resources:           #限制  requests最小要求  limits最大限制
      requests:
        cpu: "100m"
        memory: "50Mi"
      limits:
        cpu: "200m"
        memory: "100Mi"
  - name: busybox
    image: busyboxplus:latest
    tty: true
    stdin: true


[root@server2 pot]# kubectl apply -f pots.yaml 
pod/pod-example created

指定部署主机

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  nodeName: server4  指定hostname安装 
  containers:

  - name: myapp
    image: myapp:v1
    
  - name: busybox
    image: busyboxplus:latest
    tty: true
    stdin: true

标签:kubectl,管理,demo,server2,pod,k8s,root,Pod
来源: https://blog.csdn.net/m0_59750991/article/details/119203269