常用命令

Mr.Ru命令大约 11 分钟约 3445 字...

k8s

资源

kubectl cluster-info  # 显示集群端点和服务信息
kubectl get nodes -n <ns> # 查看节点列表

kubectl get pods -n <ns># 查看Pod列表
kubectl get svc -n <ns># 查看Service列表
kubectl get deployments -n <ns> # 查看Deployment列表
kubectl get ingress -n <ns> # 查看Ingress列表
kubectl get ep -n <ns> # 查看Endpoint列表
kubectl get pv,pvc -n <ns> # 查看持久卷和持久卷声明

kubectl describe pod <name>  # 查看Pod详细信息
kubectl describe node <name>  # 查看节点详细信息
kubectl describe endpoints <name>  # 查看EP详细信息

# 创建资源
kubectl apply -f <yaml_file>  # 通过YAML文件创建/更新资源
kubectl create deployment <name> --image=<image>  # 创建Deployment
kubectl expose deployment <name> --port=80 --type=NodePort  # 创建Service

# 删除资源
kubectl delete -f <yaml_file>  # 删除YAML定义的资源
kubectl delete pod,svc <name1,name2>  # 删除Pod和Service
kubectl delete deployment <name>  # 删除Deployment

# 合并秘钥
cat xxx_public.crt xxx_chain.crt > xxx.crt
# 创建秘钥
kb create secret tls xxx-tls-ingress-secret --cert=xxx.crt --key=xxx.key
# 查看秘钥
kb get secret xxx-tls-ingress-secret -o yaml

调试

kubectl logs <pod_name>  # 查看Pod日志
kubectl logs -f <pod_name>  # 实时跟踪日志

kubectl exec -it <pod_name> -- sh  # 进入Pod容器
kubectl exec <pod_name> -- cat /etc/hosts  # 执行容器内命令


#测试容器是否能连通coral-mysql、coral-redis
kb exec -it config-6ddc78c679-d6r2x -- nc -zv coral-mysql 3306
kb exec -it config-6ddc78c679-d6r2x -- nc -zv coral-redis 6379

# DNS解析
kb exec -it config-6ddc78c679-d6r2x -- nslookup coral-ck
# 网络是否通 
kb exec -it config-6ddc78c679-d6r2x -- nc -zv coral-ck 8123
# EP的状态
kb describe ep coral-ck

helm

资源

# config
hl upgrade config --set deploy.image.tag=v1.3.7_lch /data/estate-field-lch-deploy/estate-chart -f /data/estate-field-lch-deploy/service/platform/coral-config-service.yaml --install

调试

#验证chart是否遵循最佳实践的首选工具。
helm lint 

# 在本地测试渲染chart模板。
helm template --debug 

# 我们已经看到过这个技巧了,这是让服务器渲染模板的好方法,然后返回生成的清单文件。
helm install --dry-run --debug

# 这是查看安装在服务器上的模板的好方法。
helm get manifest

探活设置

service:
  type: ClusterIP
  serports:
    - name: http
      port: 8301
      targetport: 8301

#健康检查
readinessProbe:
  enabled: true
  check:
    httpGet:
      path: "/actuator/health"
      port: 8301
    periodSeconds: 30
    timeoutSeconds: 3
    initialDelaySeconds: 60
    successThreshold: 1
    failureThreshold: 8

livenessProbe:
  enabled: true
  check:
    httpGet:
      path: "/actuator/health"
      port: 8301
    periodSeconds: 30
    timeoutSeconds: 3
    initialDelaySeconds: 60
    successThreshold: 1
    failureThreshold: 8

探针配置详解
就绪探针(readinessProbe)
就绪探针用于判断容器是否已经准备好接收外部请求。当探测成功时,Kubernetes 才会将流量转发给该容器所在的 Pod。
enabled: true:启用就绪探针功能。
httpGet:通过 HTTP 请求进行探测。
path: "/actuator/health":探测路径,Spring Boot 应用通常会暴露 /actuator/health 端点用于健康检查。
port: 8301:容器内服务监听的端口。
periodSeconds: 30:每 30 秒执行一次探测。
timeoutSeconds: 3:探测请求超时时间为 3 秒。
initialDelaySeconds: 60:容器启动后 60 秒才开始执行第一次探测,避免在应用启动过程中误判。
successThreshold: 1:连续 1 次探测成功即认为容器就绪。
failureThreshold: 8:连续 8 次探测失败才认为容器未就绪。

存活探针(livenessProbe)
存活探针用于判断容器是否仍在正常运行。如果探测失败,Kubernetes 会重启容器。
enabled: true:启用存活探针功能。
httpGet:通过 HTTP 请求进行探测。
path: "/actuator/health":探测路径,与就绪探针相同。
port: 8301:容器内服务监听的端口。
periodSeconds: 30:每 30 秒执行一次探测。
timeoutSeconds: 3:探测请求超时时间为 3 秒。
initialDelaySeconds: 60:容器启动后 60 秒才开始执行第一次探测。
successThreshold: 1:连续 1 次探测成功即认为容器存活。
failureThreshold: 8:连续 8 次探测失败才认为容器需要重启。

redis

验证连通性

sudo yum install epel-release
sudo yum install redis
redis-cli -h xxx -p 6379 -a "password"

rabbitmq

# 验证服务状态
systemctl status rabbitmq-server

# 停止服务
systemctl stop rabbitmq-server

# 启动服务
systemctl start rabbitmq-server

# 查看日志
journalctl -u rabbitmq-server -n 50 --no-pager

jdk

jstat命令--通常做优化使用

jstat查看jvm里面Eden区、S区、老年代的内存情况,以及YGC和FGC的执行次数和耗时

S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used) 
EC、EU:Eden区容量和使用量 ,单位KB
OC、OU:年老代容量和使用量 ,单位KB
MC、MU:永久代容量和使用量 ,单位KB
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间,单位是秒
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间,单位是秒
GCT:垃圾回收消耗总时间,单位是秒
# 每1秒输出一次,共输出10次
# 注意对准每一列,显示结果可能会错列
jstat -gc <pid> 1s 10

image-20250606141616751

分析结果
1.Young GC的触发频率和每次耗时:总共执行了478次年轻代回收,总共耗时13.675秒
2.Full GC的触发时机和耗时:总共执行了5次老年代回收,总共耗时1.908秒
3.新生代对象增长速率:EU这一列观察,10秒增加了895-726=169M空间,

nginx

#检查 Nginx 服务的状态
systemctl status nginx

#重启命令
systemctl restart nginx

#重新加载配置文件
systemctl reload nginx

# 重启Nginx
sbin/nginx -s reload

proxy_pass配置加不加斜杠

image-20250704133855370

linux

便捷

1.配置命令行的自动补全及快捷命令:

# 编辑 bash 的配置文件(具体编辑内容见下方描述)
vim ~/.bashrc
# 使配置文件生效
source .bashrc
# kubectl 快捷命令
alias kb='kubectl --namespace=gt-gc'
# kubectl 自动补全
source <(kubectl completion bash)

# helm 快捷命令
alias hl='helm --namespace=gt-gc'
# helm 自动补全
source <(helm completion bash)

资源

# 查看 CPU 核心数
nproc

# 查看内存
free -h

# 检查 swap
swapon --show

网络

# 查看公网ip
curl ifconfig.me

# 查看已经开放的端口
firewall-cmd --list-ports 

# 启动防火墙
systemctl start firewalld

#重启firewall
firewall-cmd --reload 

#停止firewall
systemctl stop firewalld.service 

#禁止firewall开机启动
systemctl disable firewalld.service 

# 开启端口
firewall-cmd --zone=public --add-port=7099/tcp --add-port=7091/tcp --add-port=7094/tcp --add-port=7090/tcp --add-port=7036/tcp --permanent
firewall-cmd --zone=public --add-port=9109/tcp --permanent

# IP层 ping,检查源机器与目标机器之间的网络连接在 IP 层是可达的
# 1.如果能正常收到应答,说明网络层连通性基本没问题,但还需进一步排查上层应用的情况。 
# 2.如果收不到应答,比如目标机器防火墙屏蔽了 ICMP 报文、网络设备故障、IP 地址配置错误等。
ping 192.168.1.100

#查看目标服务器上对应服务是否正常启动
telnet ip 端口

#确认服务是否监听了该端口 2181,5672,9092,9200,12345,8123
netstat -tulnp | grep 12345

netstat -tulpn | grep -E ":2181|:5672|:9092|:9200|:12345|:8123"

# 应用层 curl ,在确认网络层连通性基本没问题(如通过 ping 测试)之后,用于进一步排查目标服务功能是否可访问,以及判断服务是否存在问题(如是否未正确部署、配置错误、业务逻辑错误等)
curl -I http://192.168.1.100:8080

#查看ip地址
ifconfig
ip addr

定时

https://cron.ciding.cc/open in new window

null

crontab -l #查看定时任务

文件

# 查看文件,按q退出,f向下翻,b向上翻,G跳到末尾,g跳到开头,/关键字搜索,n向下搜,N向上搜
less <文件名>
-N 显示行号
-p 定位到关键字


# 查找指定目录下包含3306的文件,显示文件目录和行数
grep -rn "3306" /data/conf/

# 执行history命令,!后跟着history命令的编号
history
!编号
# 查看前后history第x行前后多少行的命令

# tree命令查看文件层级
sudo yum install tree
tree

#查看机器时间
date

#校准服务器时间
sudo yum install ntp
sudo systemctl start ntpd

#清空文件内容
命令行模式输入
1,$d

#从/目录 查找 "linux"文件
find / -name linux

# sed,流编辑器,能够对文本进行替换、删除、插入等操作;格式为 s/原字符串/替换字符串/修饰符
# 把 server.conf 文件里全部的 aaa 替换成 xxxx.estate-pc.svc.cluster.local
sed -i 's/aaa/xxxx.estate-pc.svc.cluster.local/g' server.conf

#解压.zip文件
unzip  ***.zip

#查找出包含error字符串的日志行 
zgrep 'error' your_log_file.log.gz

# 解压日志、搜索包含关键字代码、再搜索时间范围内前后50行日志
gunzip spring.log.2024-11-29.0.gz
grep "审批通过结束,开始更新订单流程状态" spring.log.2024-11-29.*
grep -B 50 -A 50 "2024-11-29 15:05:21.062" spring.log.2024-11-29.0

#解压压缩包
tar zxvf xxx.tar.gz

#查看内存/监控服务器内存资源利用情况
free -h

#排查因磁盘空间不足导致的应用程序故障等场景
# 快速了解各文件系统的总容量、已用空间、可用空间及挂载点等信息
df -h

# disk usage 磁盘使用情况 -summarize  -human-readable
# 会以人类可读的格式输出当前目录总共占用的磁盘空间大小
du -sh

#仅显示当前目录下所有子目录本身的信息,而不展示子目录内文件的信息
ll -d */

# 按照文件大小 从小到大,按可读方式排列
ll -hSr

#vi命令跳到最后一行
输入:$ 按Enter

进程

#关机
init 0

#查看8080端口上的进程活动,可以看到进程pid
netstat -tulnp | grep 8080

#根据名字找进程:过滤出nginx进程、pid号对应的进程
ps -ef | grep nginx
ps -ef | grep pid号

docker

启动、登录、内存占用

#启动
service docker start
systemctl start docker

#登录镜像仓库
docker login -u name -p password xxxx.aliyuncs.com

#查看信息
docker info
docker -v

#查看容器内存占用
docker stats

镜像

# 制作镜像,注意最后的.代表Dockerfile上下文	
docker build -t 新镜像名字:TAG .

#根据仓库名列出部分镜像
docker image ls tomcat 

#查看本地所有镜像的所有镜像id
docker images -q

#导入镜像
docker load -i nginx.tar
#导出镜像
docker save 镜像名:Tag -o 镜像名-tag.tar

# 查看docker 占用空间
docker system df


# 删除没有任何容器使用的镜像、构建缓存
docker system prune -a

#拉取镜像
docker pull 镜像名[:Tag]

#给镜像打Tag
docker tag 镜像名:Tag

容器

# 前端nginx安装tree
apk add tree

#运行容器
docker run -d -p 8081:8080 --name=tomcat_tuyb tomcat:8.0
-d				后台运行服务
-p 8081:8080	端口映射,宿主机的8081端口映射到容器内服务的8080端口	
--name			指定服务名称(不能重复)
-it             运行时直接进入容器,比如centos镜像系统
-v 				数据卷挂载,宿主机绝对路径1:容器内路径1

#强制删除容器,可以删除运行中的容器
docker rm -f 容器名

# 查看容器内的进程
docker top 容器名或容器id

#查看容器细节(WorkingDir工作目录、ip地址)
docker inspect 容器名或容器id  

#复制宿主机文件到容器内,反过来一样
docker cp /etc/hosts 容器名或容器id:/opt
docker cp 容器名或容器id:/opt /etc/hosts 

#实时查看容器后200行日志
docker logs --tail 200 -f <container_name>

# 查看容器的指定列,id 镜像 和 状态
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"

#关闭所有启动容器
docker stop $(docker ps -q)

网络

network_mode: host模式port映射无用

network_mode: host 的情况下,docker-compose 里不需要再用 ports 映射,因为 host 模式已经共享网络了,ports 配置会被忽略吗?其实在 host 模式下,ports 配置是无效的,因为不需要映射,直接使用宿主机的端口。所以用户的配置里 ports 可以去掉,不过这不影响,因为 host 模式下 ports 会被忽略。

注意:修改docker-compose.yaml的network_mode后 ,要重启nginx

Docker 默认创建以下三种网络类型之一:

  1. bridge(默认网络):
    • 容器通过虚拟网桥连接,彼此隔离但可通过 IP 通信。
    • 适用于单机多容器间的通信。
  1. `host:
    • 容器直接使用主机的网络栈(IP 和端口),无网络隔离。
    • 适用于需要高性能网络的场景。
  1. none
    • 容器无网络连接,仅能进行本地进程间通信(IPC)。
    • 适用于对网络隔离要求极高的场景。
# 列出所有网络
$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
abc123         bridge    bridge    local
def456         host      host      local
ghi789         none      null      local

# 查看自定义网络信息,主要看IPAM的Subnet为分配给网络的 IP 地址段
$ docker network inspect <网络名称或 ID>
[
    {
        "Name": "my-network",
        "Id": "def789...",
        "Created": "2023-10-02T10:30:00.000000Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.100.0/24",
                    "Gateway": "192.168.100.1"
                }
            ]
        },
        ...
]
#删除网络
$ docker network rm <网络名称或 ID>

git命令

python

anaconda命令

#查看虚拟环境
conda env list
# 创建虚拟环境(一定要指定python版本,才能虚拟环境被pycharm选中)
conda create -n xxxxx(名字) python=3.10
# 删除虚拟环境
conda remove -n xxxxx(名字) --all
#进入虚拟环境
conda activate  xxxxx(名字)
# 退出虚拟环境
conda deactivate

pycharm使用虚拟环境

image-20250622180615022

pip命令

# 更新 pip 本身
pip install --upgrade pip
# 输出项目的依赖版本到requirements.txt文件
pip freeze > requirements.txt

kpl项目

服务器

#一、字体相关
https://www.cnblogs.com/somebottle/p/18564830/matplotlib_with_cjk_chars

抓包

https://www.cnblogs.com/yttbk/p/8609720.htmlopen in new window

项目运行

cd /home/kpl

docker build -t kpl_service:1.8 .

docker run -e TOKEN=aaa -d -p 5000:5000 kpl_service:1.8

http://ip:5000/

<head>
    <meta charset="UTF-8"/>
    <title>股票概念分析</title>
    <!-- 引入 Vue、Axios、ECharts -->
    <script src="./js/vue.min.js"></script>
    <script src="./js/axios.min.js"></script>
    <script src="./js/echarts.min.js"></script>
    <!-- 引入 Element-UI -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <script src="./js/index.js"></script>
    <style>
        .clearfix:before, .clearfix:after {
            display: table;
            content: "";
        }

        .clearfix:after {
            clear: both;
        }

        .fr {
            float: right;
        }
    </style>
</head>
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.8