docker容器所依赖的六种namespace级别的资源隔离技术:
1.UTS(UNIX Time-sharing system)
允许创建独立的hostname/domian_name namespace,作为独立的节点
2.IPC(Inter Process Communication)
创建隔离的进程间通信方式,实现包括信号量、消息队列、管道、共享内存等资源的namespace隔离
3.PID(Process ID)
允许树的子叶节点namespace创建自己专属的pid区间,pid对同级节点无效,仅父级namespace节点可见。(在子节点的pid,会在父节点映射为另一个pid标志,
因此在父节点的角度,每个子节点的进程拥有两个pid号)
4.mount
挂载点namespace,各个namespace默认的mount挂载只在本空间内生效,不影响其他namespace,也可使用share共享挂载的方式互相影响, 或者slave从属挂
载的方式,实现主影响从。
5.network
每个net ns拥有独立的网络资源(包括网络设备,IPv4/IPv6协议栈,防火墙,/proc/net、/sys/class/net目录等)
6.user
每个user ns拥有独立的id、属性、key、根目录,组织结构等
docker:
- docker ps -a
- docker build -t xxx . #根据Dockerfile生成image
- docker images
- docker exec -it {ID\NAME} /bin/bash | /bin/sh
- docker run -it {ID\NAME} -p -v
- docker start {ID\NAME}
- docker stop {ID\NAME}
- docker rm {ID\NAME}
- docker rmi {ID\NAME}
- docker save coredns/coredns:1.0.0 | gzip > coredns.tar.gz #将已有的img打包
- docker load -i IMAGE #docker载入本地image打包文件
- docker stats {ID\NAME} #查看容器资源占用情况,不填查看全部
- docker cp
- docker commit -p -m 'xxx' 1a889d5bbf99 xxx #将容器打标签提交为img,-p选项意思是打包时暂停容器,不会退出
- docker push xxx #push到容器仓库
k8s:
- kubectl get pods -o wide
- kubectl get pod xxx -o yaml #获取yaml配置文件
- kubectl get nodes -o wide
- kubectl set image deployment xxx xxx=image_url #更改部署镜像
- kubectl describe pod mysql-deploy-766bd7dbcb-7nxvw #查看pod的创建运行记录
- kubectl scale deploy/kube-dns --replicas=3 #修改deploy的副本数
- kubectl create -f xxx.yaml #创建资源
- kubectl delete deploy mysql-deploy #删除资源
- kubectl get svc -o wide
- kubectl get ep SVC_NAME #查看svc对应绑定的pod
- kubectl get rs
- kubectl get deploy/DEPLOY-NAME
- kubectl get all #获取所有类型资源
- kubectl get componentstatuses #获取k8s各组件健康状态,简写为kubectl get cs
- kubectl describe deploy/DEPLOY-NAME
- kubectl status rollout deploy/DEPLOY-NAME
- kubectl label nodes 171 disktype=ssd #添加标签
- kubectl label nodes 171 disktype- #删除标签
- kubectl label nodes 171 disktype=hdd --overwrite #修改标签
- kubectl logs POD_NAME #查看pod的日志,排错用
- kubectl get nodes -o json | jq '.items[] | .spec' #查看每个node的CIDR分配
- kubectl delete pod NAME --grace-period=0 --force #强制删除资源,在1.3版本去掉--force选项
- kubectl replace -f xxx.yaml #更改定义资源的yaml配置文件
- kubectl get secret -n kube-system | grep dashboard #查找secret
- kubectl describe secret -n kube-system kubernetes-dashboard-token-ld92d #查看该secret的令牌
- kubectl scale --replicas=3 deployment/xxxx #横向扩展deploy的rs数量
- kubectl cordon NODENAME #将node设置为检修状态,不再向此node调度新的pod
- kubectl drain NODENAME #将node设置为(排水)不可用状态,并且驱逐其上的pod转移至其他正常node上。这一步会进行两个步骤:1.将node设为cordon状态2.驱逐node上的pod
- kubectl drain node2 --delete-local-data --force --ignore-daemonsets #忽略ds,否则存在ds的话无法正常执行
- kubectl uncordon NODENAME #取消检修状态、排水状态
- kubectl proxy --address=0.0.0.0 --port=8001 --accept-hosts=^.* & #kubectl监听端口代理apiserver的服务,允许调用客户端免去认证步骤
- kubectl patch deployment my-nginx --patch '{"spec": {"template": {"metadata": {"annotations": {"update-time": "2018-04-11 12:15" }}}}}' #更新configmap之后挂载configmap 的pod中的环境变量不会自动更新,可以通过更新一下deployment.spec.template的注解内容来触发pod的滚动更新。
**k8s restful api**
#### GET方法
## labelSelector
# 获取标签{app: pimsystemdev}的pod
http://192.168.9.27:8001/api/v1/namespaces/default/pods?labelSelector=app%3Dpimsystemdev
# 动态获取标签{app: pimsystemdev}的pod
http://192.168.9.27:8001/api/v1/namespaces/default/pods?watch&labelSelector=app%3Dpimsystemdev
## fieldSelector
# 根据level 1字段获取信息
http://192.168.9.27:8001/api/v1/namespaces/default/pods?fieldSelector=metadata.name%3Dykstaskdev-657c7f56fc-7vnd4
docker、k8s常用命令速查及k8s restful api接口
最新推荐文章于 2025-02-07 08:00:00 发布