ToB企服应用市场:ToB评测及商务社交产业平台

标题: K8s中pod的管理和优化 [打印本页]

作者: 张裕    时间: 2024-10-15 01:49
标题: K8s中pod的管理和优化
一、k8s中的资源


1.1 资源管理介绍


1.2 资源管理方式




1.2.1 命令式对象管理

# 查看全部pod
kubectl get pod
#查看某个pod
kubectl get pod pod_name
# 查看某个pod,以yam1格式展示效果
kubectl get pod pod_name -o yaml
1.2.2 资源范例

常用资源范例

k8s常见命令利用

1.2.3 基本命令示例

# 显示集群版本
kubectl version
# 显示集群信息
kubectl cluster-info
# 创建一个webcluster控制器,控制器中pod数目为2

# 查看资源资助
kubectl explain deployment
# 查看控制器参数资助
kubectl explain deployment.spec
# 编辑控制器配置(利用补丁更改控制器配置)
kubectl patch deployments.apps webcluster -p '{"spec": {"replicas":4}}'
# 删除资源
kubectl delete deployments.apps webcluster
1.3 运行和调试命令

# 运行pod
kubectl run testpod --image nginx/nginx:latest
# 端口暴露
kubectl expose pod  testpod  --port 80 --target-port 80 
# 查看资源详细信息
kubectl describe pods testpod
# 查看资源日记 
kubectl logs pods/testpod
# 运行交互pod
ctrl+pq退出不绝止pod
kubectl run -it testpod --image busybox
进入到已经运行的容器,且容器有交互环境
kubectl attach pods/testpod -it
# 在已经运行的pod中运行指定命令
kubectl exec -it pods/testpod1 /bin/bash
# 拷贝文件到pod中
kubectl cp testpod1.yml testpod1:/
kubectl exec -it pods/testpod1 /bin/bash
# 复制pod中的文件到本机
kubectl cp testpod1:/testpod1.yml testpod1.yml
# 运行非交互pod 
kubectl run nginx --image nginx/nginx:latest
二、什么是pod 

2.1 什么是pod?


2.2 创建自主式pod(生产不推荐)

长处:
灵活性高:

学习和调试方便:

实用于特殊场景:

缺点:
管理复杂:

缺乏高级功能:

可维护性差:

# 建立一个名为timinglee的pod 
kubectl run timinglee --image nginx/nginx:latest
# [root@k8s-master ~]# kubectl get pods
#显示pod的较为详细的信息
[root@k8s-master ~]# kubectl get pods -o wide
2.3 利用控制器管理pod (推荐) 

高可用性和可靠性:

可扩展性:

版本管理和更新:

声明式配置:

服务发现和负载均衡:

多环境同等性:

 # 建立控制器并自动运行pod
kubectl create deployment timinglee --image nginx/nginx:latest
# 为timinglee扩容
kubectl scale deployment timinglee --replicas 6

# 为timinglee缩容
kubectl scale deployment timinglee --replicas 2
2.4 应用版本的更新

# 利用控制器建立pod
kubectl create deployment timinglee --image myapp: v1 --replicas 2
# 暴漏端口
kubectl expose deployment timinglee --port 80 --target-port 80
# 查看历史版本
kubectl rollout history deployment timinglee
# 更新控制器镜像版本
kubectl set image deployments/timinglee myapp=myapp:v2
# 版本回滚
kubectl rollout undo deployment timinglee --to-revision 1
2.5 利用yaml文件部署应用 

用yaml文件部署应用有以下长处
声明式配置:

灵活性和可扩展性:

与工具集成:

# 得到资源资助
kubectl explain pod.spec.containers
# 运行简单的单个容器pod
kubectl run timinglee --image myapp:v1 --dry-run=client -o yaml > pod.yml
vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: timinglee   # pod 标签
  name: timingleel  # pod 名称
spec:
  containers:
  - image: myapp:v1  # pod 镜像
    name: web1  # 容器名称
三、pod的生命周期 

3.1 INIT容器



3.2 INIT容器的功能


 3.3  INIT容器实例

kubectl run initpod --image myapp:v1 -o yaml > pod.yml
vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: initpod
  name: initpod
spec:
  containers:
   - image: myapp:v1
     name: myapp
  initContainers:
   - name: init-myservice
     image: busybox
     command: ["sh","-c","until test -e /testfile;do echo wating for myservice;sleep 2;done"]
kubectl apply -f pod.yml

kubectl logs pods/initpod init-myservice
wating for myservice
wating for myservice
wating for myservice 
kubectl exec pods/initpod -c init-myservice -- /bin/sh -c "touch /testfile"







免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4