<!--
title: rancher 2.7查看镜像
date: 2023-4-4 17:58
createDate: 2023-4-4
tags: docker,k8s,kubernetes,rancher
category: k8s/
grammar_cjkRuby: true
-->

简介

rancher 2.7 使用calico网络组件时,istio不能正常解析域名。使用其它网络组件 canal 后解决。

要点

rancher 2.7 开始使用rke2 和 containerd 代替docker,熟悉新的方式。

查看containerd的连接地址:

ps -ef|grep rke2

输出:

ps -ef|grep rke2
root       15184       1  0 Feb16 ?        02:04:53 /var/lib/rancher/rke2/data/v1.25.6-rke2r1-a50bf57cac06/bin/containerd-shim-runc-v2 -namespace k8s.io -id 9e1c991aa6cfb48e19ec431b513b104fcf091bf37c14199fe55801d846d55168 -address /run/k3s/containerd/containerd.sock
・・・・・・
root     1384253       1  0 Mar24 ?        00:30:41 /usr/local/bin/rke2 agent
root     1384348 1384253  3 Mar24 ?        11:28:17 containerd -c /var/lib/rancher/rke2/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/rke2/agent/containerd

可以看到contanerd的socket地址是:/run/k3s/containerd/containerd.sock

操作

  • 查看命名空间:ctr -a /run/k3s/containerd/containerd.sock ns ls
  • 查看k8s正在运行的容器:ctr -a /run/k3s/containerd/containerd.sock -n k8s.io c ls
  • 删除运行时:
    ctr -a /run/k3s/containerd/containerd.sock -n k8s.io c rm [容器列表]

    ctr -a /run/k3s/containerd/containerd.sock -n k8s.io c del [容器列表]
  • 导入镜像到指定命名空间: ctr -a /run/k3s/containerd/containerd.sock -n k8s.io image import --digests=true <path/to/images/file>

    其中 --digests=true 是为了保证没有tag的镜像也能正常导入。

使用 k8s containerd 命令工具操作:

## 查看正在运行的容器
crictl -r /run/k3s/containerd/containerd.sock ps
## 查看正在运行的pod
crictl -r /run/k3s/containerd/containerd.sock pods

清理节点

rm -rf /var/lib/kubelet/ /run/k3s/ /usr/local/bin/rke2 /var/lib/rancher
  • 1、删除rke

    sudo rm -rf /usr/local/bin/rke2
    pkill rke2
  • 2、删除rancher

    sudo rm -rf /var/lib/rancher
  • 3、重启主机

参考资料及附录

_

本文由 qingchuwudi 译制或原创,除非另有声明,在不与原著版权冲突的前提下,本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

知识共享许可协议


title: Golang循环依赖排查方法
date: 2022-12-13 11:2
createDate: 2022-12-13
tags: go
category: golang/

grammar_cjkRuby: true

一、简介

本文介绍如何通过技术手段排查Golang的循环依赖。

二、要点

  • 1、安装依赖库
  • 2、用命令生成视图

三、操作

1、安装依赖

  • 1、安装图片生成工具

    ## Ubuntu packages*
    sudo apt install graphviz -y
    ## Windows
    https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/7.0.4/windows_10_cmake_Release_graphviz-install-7.0.4-win64.exe
  • 2、安装代码检查工具

    go install github.com/kisielk/godepgraph@latest

    godepgraph 参数:

| 参数             | 缩写  | 类型    | 默认值   | 说明
|------------------|------|---------|---------|-------------------------------------------------------
| `nostdlib`       | `s`  | boolean | `false` | 忽略go的标准库
| `novendor`       | -    | boolean | `false` | 忽略vendor文件夹中的包
| `stoponerror`    | -    | boolean | `true`  | 遇到错误立刻停止
| `withgoroot`     | `d`  | boolean | `false` | 显示属于Go标准库的依赖关系
| `ignoreprefixes` | `p`  | string  | `""`    | 忽略指定前缀的包,多个之间用英文逗号分割
| `ignorepackages` | `i`  | string  | `""`    | 忽略指定的包,多个之间用英文逗号分割
| `onlyprefixes`   | `o`  | string  | `""`    | 只处理指定前缀的包,多个之间用英文逗号分割
| `tags`           | -    | string  | `""`    | 生成可执行文件时需要满足的标签列表,多个之间用英文逗号分割
| `horizontal`     | -    | boolean | `false` | 生成水平结构的依赖关系图(默认垂直结构)
| `withtests`      | `t`  | boolean | `false` | 包含测试包
| `maxlevel`       | `l`  | int     | `256`   | 生成图像的最大深度,默认256

2、生成视图

  • 1、Linux

    godepgraph -novendor -nostdlib -ignoreprefixes "github.com,go.uber.org,entgo.io,ariga.io" ./pkg/web | dot -Tsvg -o godepgraph.svg
  • 2、Windows

    godepgraph -novendor -nostdlib -ignoreprefixes "github.com,go.uber.org,entgo.io,ariga.io" ./pkg/web | & 'C:\Program Files\Graphviz\bin\dot.exe' -Tsvg -o godepgraph.svg

    图像:
    godepgraph

四、参考资料及附录

本文由 qingchuwudi 译制或原创,除非另有声明,在不与原著版权冲突的前提下,本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

知识共享许可协议