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还有 StatefulSetDaemonSetJob 等 类型资源。我们都称为 工作负载

有状态应用使用 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
posted on 2023-03-14 11:45  王冬冬冬不烦恼  阅读(836)  评论(0编辑  收藏  举报