Docker&k8s

Cgroup和Namespace

一、$$当前终端进程

ps aux|grep 'run.sh'

ps aux|grep 4021

ls -l /proc/$$/ns/#查看命名空间

docker ps#docker进程

kill -9 number#杀死进程

命名空间号一致,则相互可以看到

docker exec -ti myblog bash

docker容器对于操作系统来说是一个进程。

命名空间是用来做资源隔离的

pid:用于进程隔离(PID:进程ID)

net:管理网络接口(NET:网络)

ipc:管理对IPC资源的访问(IPC:进程间通信(信号量、消息队列和共享内存))

mnt:管理文件系统挂载点(MNT:挂载)

uts:隔离主机名和域名

user:隔离用户和用户组

二、CGroup资源限制

Control Groups(简称CGroups)能够隔离宿主机器上的物理资源,例如CPU、内存、磁盘I/O和网络宽带。每一个CGroup都是一组被相同的标准和参数限制的进程。

三、UnionFS联合文件系统

UnionFS其实是一种为Linux操作系统设计的用于把多个文件系统联合到同一挂载点的文件系统服务。它能将不同文件夹中的层联合到同一个文件夹中,整个联合的过程被称为联合挂载(Union Mount)

Docker的存储驱动

镜像分层存储

Docker镜像是由一系列的层组成的,每层代表Dockerfile中的一条指令。

Docker&k8s_第1张图片

 四、kubelet是一个单独的服务

systemctl status kubelet

kubectl -n kube-system get po -o wide#pod节点

journalctl -fu docker# f是tail结尾的,u决定系统命令名称的,查看系统命令日志

pod是k8s资源,组件运行才能产生资源

docker logs -f 容器id#docker看日志

docker ps |grep apiserver#查看k8s组件

kubectl api-resources#查看k8s资源

k8s中的namespace

kubectl get nodes

kubectl get namespaces

kubectl get po -n default#默认命名空间

kubectl get -h#查看子命令

k8s最小调度单元pod

pod里面包裹着容器。

使用yaml格式定义pod

yaml文件数组前面加-

kubectl api-versions#获取版本号

kubectl explain pod.metadata#查看pod的metadata的参数

kubectl apply -f one-pod.yaml

kubectl create -f one-pod.yaml

kubectl   -n luffy exec  -ti myblog -c myblog bash

docker run -ti --rm --net=container:mysql busybox sh#启动容器共享mysql的网络空间

kubectl -n luffy get po myblog -o json|wc -l#查看行数

kubectl -n luffy get po myblog -o yaml|wc -l

kubectl -n luffy get po myblog -o yaml# 查看yaml文件

kubectl -n luffy get po myblog -o yaml>exam.yaml# 输出yaml文件

kubectl create -f one-pod.yaml#从文件创建

kubectl -n luffy describe pods myblog-test#查看错误信息

docker logs --tail=1 -f 容器名称#只查看最后一行

kubectl -n luffy logs --tail=4 -f myblog -c pod名称#查看日志

#升级版本

kubectl apply -f demo-pod.yaml

#根据文件删除pod

kubectl delete -f  demo-pod.yaml

# 根据pod名称删除

kubectl -n delete pod

docker rm -f

kubectl get no --show-labels#查看node

kubectl label node k8s-slave1 component=mysql# 给组件打label

volumns主机挂载,缺点:节点删除,数据消失

两种机制:LivenessProbe探针/ReadinessProbe探针

存活性探测:用于判断容器是否存活,即Pod是否为running状态,不健康则kubelet将kill掉容器,并根据容器的重启策略是否重启。如果没有这个探针,则认为永远成功。

可用性探测:用于判断容器是否正常提供服务,即容器的Ready是否为True,是否可以接收请求,如果探测失败,容器的Ready将为False

  • exec:通过执行命令来检查服务是否正常,返回值为0则表示容器健康
  • httpGet方式:通过发送http请求检查服务是否正常,返回200-399状态码则表示容器健康
  • tcpSocket:通过容器的IP和Port执行TCP检查,如果能够建立TCP连接,则表明容器健康。

如何拿到yaml文件

kubectl -n kube-system get deployment

kubectl -n kube-system get deployment coredns  -oyaml>coredns.deployment.yaml

你可能感兴趣的:(k8s,大数据)