Linux+Docker+K8s常用命令大全
Linux命令
查看当前路径
pwd
光标移动快捷键
control + A : 光标移至行首
control + E : 光标移至行尾
grep命令
grep 搜索内容(文本/正则表达式/……)
-o 只输出文件中匹配到的部分
-n 输出行号:行
-A n 输出该行,并列出后边的n行
awk命令
文本和数据进行处理的编程语言 https://wangchujiang.com/linux-command/c/awk.html
匹配字符串 awk '/sessionId=................_/{print}' https://www.linuxprobe.com/awk-filter-string.html
查看端口占用
lsof -i:端口号 列出占用端口的
netstat -tunlp | grep 端口号 显示 tcp、udp的端口和进程等相关情况
重启机器
reboot 同下
shutdown -r now 停止系统服务后立即重启
查看进程
ps 将某个进程显示出来
ps -aux 列出详细信息
grep 查找,正则匹配
UID :程序被该 UID 所拥有
PID :就是这个程序的 ID
PPID :则是其上级父程序的ID
C :CPU使用的资源百分比
STIME :系统启动时间
TTY :登入者的终端机位置
TIME :使用掉的CPU时间。
CMD :所下达的是什么指令
查看CPU使用情况
top -bn 1 -i -c 看到总体的系统运行状态和cpu的使用率 。
%Cpu(s): 2.2 us, 0.2 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%sy:表示系统空间的cpu使用率,主要是内核程序。
%ni:表示用户空间且通过nice调度过的程序的cpu使用率。
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
%st:被虚拟机偷走的cpu
查看内存使用情况
free
total:总计物理内存的大小
used:已使用多大
free:可用有多少
shared:多个进程共享的内存总额
buff/cached:磁盘缓存的大小
查看服务状态
一、使用SVC
cd /service
sudo svc -d 停止服务
sudo svc -u 启动服务
sudo svc -t ** 重启服务
sudo svstat * 查看服务状态
注: 使用sankuai账户 ,sudo -u sankuai -i
二、利用进程来查看
命令里 ps -aux | grep xxx 是查看某个进程或者服务是否存在。
三、利用service命令
1.查看单个服务的运行状态:
service 服务名 status
显示磁盘空间使用情况
df -ih 显示索引的
df -lh 显示本地文件的
查看日志
head -n 100 filename 显示前面100行
tail -n 100 filename 显示最后100行
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。
切换用户
sudo -iu sankuai /root 以root身份执行切换
su - root 需要输入root密码
查看文件内容
open 打开文件
cat 查看文件
vim 编辑文件
查找文件
which 在环境变量$PATH设置的目录里查找
locate 在数据库中查找
find 在指定目录下查找文件
显示文件/目录大小
du 目录下所有文件
du -h filename 指定文件大小 ,方便阅读的格式
du -h --max-depth=2 / 2>/dev/null | sort -rh | head 遍历/下2层目录,从大到小排序显示前10个目录文件的大小
统计文件的行数
wc -l filename 文件里有多少行
wc -w filename 文件里有多少个字
统计文件个数
ls -l | grep "^-" | wc -l 统计当前目录下文件的个数(不包括目录)
ls -lR | grep "^-" | wc -l 统计当前目录下文件的个数(包括子目录)
ls -lR | grep "^d" | wc -l 查看某目录下文件夹(目录)的个数(包括子目录)
复制文件
cp -r /source/ /target 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件(原来的文件还存在)
修改文件名
mv file1.txt file2.txt 将file1.txt重命名为file2.txt(原来的文件夹中消失)
新建文件
>:标准重定向符允许我们创建一个 0KB 的空文件。
touch:如果文件不存在的话,touch 命令将会创建一个 0KB 的空文件。
cat:它串联并打印文件到标准输出。
vi/vim:Vim 是一个向上兼容 Vi 的文本编辑器。它常用于编辑各种类型的纯文本。
合并文件
cat file1.txt file2.txt file3.txt > file.txt 读取多个文件,合并到一个文件
cat file1.txt >> file2.txt 将file1追加到file2的尾部
统计文件中str次数
grep -o str filename | wc -l
head -n 200 neihu_803804_313-322.log | grep -o 'markdata_20220317' | wc -l
查看文件中指定行
sed -n '9p' filename 查看第9行的数据
sed -n '5,9p' filename 查看第5-9行的数据
Docker命令
列出所有docker命令
docker
帮助信息
docker cmd --help
拉取镜像
docker pull apache/incubator-doris:build-env-1.3.1
构建镜像
用于使用 Dockerfile 创建镜像。参数说明:
- –build-arg=[] : 设置镜像创建时的变量;
- –cpu-shares : 设置 cpu 使用权重;
- –cpu-period : 限制 CPU CFS周期;
- –cpu-quota : 限制 CPU CFS配额;
- –cpuset-cpus : 指定使用的CPU id;
- –cpuset-mems : 指定使用的内存 id;
- –disable-content-trust : 忽略校验,默认开启;
- -f : 指定要使用的Dockerfile路径;
- –force-rm : 设置镜像过程中删除中间容器;
- –isolation : 使用容器隔离技术;
- –label=[] : 设置镜像使用的元数据;
- -m : 设置内存最大值;
- –memory-swap : 设置Swap的最大值为内存+swap,"-1"表示不限swap;
- –no-cache : 创建镜像的过程不使用缓存;
- –pull : 尝试去更新镜像的新版本;
- –quiet, -q : 安静模式,成功后只输出镜像 ID;
- –rm : 设置镜像成功后删除中间容器;
- –shm-size : 设置/dev/shm的大小,默认值是64M;
- –ulimit : Ulimit配置。
- –squash : 将 Dockerfile 中所有的操作压缩为一层。
- –tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- –network: 默认 default。在构建期间设置RUN指令的网络模式
# 使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1
docker build -t runoob/ubuntu:v1 .
# 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像
docker build github.com/creack/docker-firefox
# 通过 -f Dockerfile文件的位置 创建镜像
docker build -f /path/to/a/Dockerfile .
打tag镜像
docker tag 镜像名称:tag版本
提交镜像
docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag
推送镜像
docker push 本地镜像 远端镜像:tag
登录dockerHub
docker login
Save镜像到tar
将指定镜像保存成 tar 归档文件。参数说明:
- -o : 输出到的文件。
# 将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
通过tar加载镜像
导入使用 docker save
命令导出的镜像。参数说明:
- –input , -i : 指定导入的文件,代替 STDIN。
- –quiet , -q : 精简输出信息。
# 导入镜像 docker load --input fedora.tar
列出所有容器
docker ps -a
查看镜像
docker images
查看容器内的进程
docker top container_id
启动容器
docker run -itd --name docker名称 -v ~/.m2:/root/.m2 -v /data2/olap/zuochunwei/doris-vectorized:/root/incubator-doris 镜像名:tag版本
docker run -itd --name zuochunwei-doris -v ~/.m2:/root/.m2 -v /data2/olap/zuochunwei/doris-vectorized:/root/incubator-doris apache/incubator-doris:build-env-ldb-toolchain-latest
-d 后台启动
--name 给容器指定一个名字
-p 80:80 开放映射端口
-v 宿主机文件存储位置:容器内文件位置
进入运行中的容器
docker exec -it container_id /bin/bash
docker exec -it 4ae006a943cd /bin/bash
退出容器
exit 退出&关闭容器
CTRL + P + Q 退出不关闭容器
停止容器
docker stop container_id
启动停止的容器
docker start container_id
重启已停止的容器
docker restart container_id
杀掉容器
docker kill container_id
删除容器
docker rm -f container_id
删除镜像
docker rmi image_id
查看容器细节
docker inspect container_id
查看容器IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $container_id
容器文件拷贝
docker cp 容器ID/名称: 容器内路径 容器外路径
查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
K8S命令
kubectl get
#查看集群中所有 Node。
kubectl get nodes
kubectl get nodes -l | --selector KEY1=VALUE1[,KEY2=VALUE2]
#查看集群中的namespace -A 查看全部
kubectl get ns -A
#查看集群中的deployment -A 查看全部 -n 查看指定空间
kubectl get ns -n deployment
#查看集群中的serive -A 查看全部 -n 查看指定空间 -o wide 查看IP节点等
kubectl get service -n 空间 -o wide
kubectl get pods
#查看名字空间下的所有 Pod。
kubectl get pods -n NAMESPACE
#查看名字空间下的所有 Pod,输出更多信息,如 Pod IP、节点名等。
kubectl get pods -n NAMESPACE -o wide
#使用标签检索Pod
kubectl get pod -l app=my-dep
#查看 Pod 里的容器。
kubectl get pods POD-NAME -n NAMESPACE -o jsonpath={.spec.containers[*].name}
#查看 Pod IP 地址
kubectl get pods -n <namespace> -o wide | grep POD-NAME
或
kubectl describe pods POD-NAME -n <namespace> | grep IP
#查看 Pod 资源量(Requets)。
kubectl describe pods POD-NAME | grep Requests
kubectl create
#创建namespace
kubectl create namespace 空间名
#创建deployment
kubectl create deployment mytomcat --image=tomcat:8.5.68
#创建deployment 支持多副本
kubectl create deployment my-dep --image=nginx --replicas=3
#暴露Deploy
kubectl expose deployment my-dep --port=8000 --target-port=80
# clusterIP暴露
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP
#NodePort方式暴露
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort
除了Deployment,k8s还有 StatefulSet
、DaemonSet
、Job
等 类型资源。我们都称为 工作负载
。
有状态应用使用 StatefulSet
部署,无状态应用使用 Deployment
部署
https://kubernetes.io/zh/docs/concepts/workloads/controllers/
kubectl edit
# 编辑对应Kind资源的yaml配置
kubectl edit 资源名 -n 空间名
kubectl apply
#根据配置文件,给集群创建资源
kubectl apply -f xxxx.yaml
kubectl exec
#登录pod中的容器
kubectl exec -it PODNAME -n NAMESPACE -- /bin/sh
kubectl describe
#显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。
# 显示名为 <node-name> 的 Node 的详细信息。
kubectl describe node <node-name>
# 或
kubectl describe node/<node-name>
# 显示名为 <pod-name> 的 Pod 的详细信息。
kubectl describe pod <pod-name>
# 或
kubectl describe pod/<pod-name>
# 显示由名为 <rc-name> 的副本控制器管理的所有 Pod 的详细信息。
# 记住:副本控制器创建的任何 Pod 都以副本控制器的名称为前缀。
kubectl describe pods <rc-name>
# 描述所有的 Pod
kubectl describe pods
# 显示名为 <cm-name> 的 Configmap 的详细信息。
kubectl describe cm <cm-name>
# 或
kubectl describe cm/<cm-name>
kubectl logs
#查看 Pod 日志
kubectl -f logs <pod-name> -n <namespace>
重启 Pod
#滚动重启 Deployment 下的所有 Pod
kubectl rollout restart deployment <deployment_name> -n <namespace>
#直接删除 Pod实例来达到重启的目的
kubectl delete pods POD-NAME -n NAMESPACE
#重新部署 POD
kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f –
#扩缩容
kubectl scale --replicas=5 deployment/my-dep
#历史记录
kubectl rollout history deployment/my-dep
#查看某个历史详情
kubectl rollout history deployment/my-dep --revision=2
#回滚(回到上次)
kubectl rollout undo deployment/my-dep
#回滚(回到指定版本)
kubectl rollout undo deployment/my-dep --to-revision=2
Pod CrashLoopBackOff
#排查容器退出状态码,查看异常 Pod 的状态
kubectl describe pod <pod-name> -n <namespace>
#查看 Pod 日志
kubectl -f logs <pod-name> -n <namespace>
kubeadm 操作
#所有机器添加master域名映射,以下需要修改为自己的
echo "172.19.143.4 cluster-endpoint" >> /etc/hosts
#主节点初始化
kubeadm init \
--apiserver-advertise-address=172.19.143.4 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
#所有网络范围不重叠
#node节点加入集群
kubeadm join cluster-endpoint:6443 --token thl4hd.53wfd5wpz1eairvu \
--discovery-token-ca-cert-hash sha256:c3df8f156cca5db0ae1fa0a9a5ce2ac56cc003b7ca492693b570d76133b6a6b3
#创建新令牌
kubeadm token create --print-join-command