我正在尝试通过服务访问侦听端口 18081 的 DaemonSet,但到目前为止未成功。
由 DaemonSet 启动的 pod 工作正常。我可以将端口转发到 pod 和端口 18081,并与端口上公开的 API 对话。
DaemonSet 的服务配置如下:
kind: Service
apiVersion: v1
metadata:
name: monerod-service
spec:
selector:
name: monerod
ports:
- protocol: TCP
port: 18081
Run Code Online (Sandbox Code Playgroud)
在 Kubernetes UI(kubectl 代理)中,服务中选择了正确的 Pod,因此 Pod 选择器似乎没问题。
我可以在需要连接到 monerod-service 的 pod 上执行 ping 并显示正确的 IP。但是通过 curl 连接到端口失败(相同的 curl 在端口转发测试中有效)。
我在配置中缺少什么。DaemonSet/Deployment 服务创建之间有区别吗?
更多地使用 Kubernetes
我玩弄了服务和 DaemonSet。我将 DaemonSet 转换为“正常”部署,但显示了相同的行为。因此该行为与 DaemonSets 无关。它必须是我不理解的服务/豆荚的其他东西。
我现在创建了服务:
kubectl expose deployment monerod-deployment --type=ClusterIP
Run Code Online (Sandbox Code Playgroud)
这导致以下服务:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "monerod-deployment",
"namespace": "default", …Run Code Online (Sandbox Code Playgroud) CLHS 描述了 22.3.1.4 波浪线垂直条:页面 如果可能,它会输出页面分隔符。~n| 这样做n次。
我没有找到太多的页面分隔符。在 MacOS 上使用 SBCL 2.0 进行尝试,页面分隔符似乎是换行符 (Ascii 0A)。这将使它与 ~% 相同?
在 Common Lisp 的悠久历史中,它是不是还有别的东西?
我无法理解如何使用一些旧的 VGA 代码在此示例中设置序列控制器寄存器:
mov dx,SC_INDEX
mov ax,0604h
out dx,ax ;disable chain4 mode
Run Code Online (Sandbox Code Playgroud)
该示例来自 Michael Abrash 的 VGA 书籍:https : //www.phatcode.net/res/224/files/html/ch47/47-02.html
根据描述,他想设置索引 4 处的内存模式寄存器。他想禁用位索引 3 处的 chain4(全部根据 Richard F. Ferraro 编写的 EGA、VGA 和超级 VGA 卡的程序员指南)。
我不明白为什么他将 2 个字节 06 和 04 放入 ax 和out它们。输出寄存器只有一个字节,他没有明确设置寄存器的索引以进行寻址。是不是发生了一些我不明白的魔法?
在我打开bug之前,我想检查一下这里发生了什么.
我把这个C代码移植到Rust:
unsigned __int128 r = (unsigned __int128)a * (unsigned __int128)b;
Run Code Online (Sandbox Code Playgroud)
很容易(我想):
let r = (a as u128) * (b as u128);
Run Code Online (Sandbox Code Playgroud)
现在有了这个输入参数,我在C和Rust中获得了不同的乘法结果:
(0x56eaa5f5f650a9e3 as u128) * (0xa0cf24341e75bda9 as u128)
Run Code Online (Sandbox Code Playgroud)
Rust和C的结果不同:
Rust: 0x3698fbc09d2c5b15e8889b1b676bbddb
C: 0x3698fbc0f417010bded944fe676bbddb
^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
我交叉检查了结果,得到了与C代码相同的结果.
我错过了什么吗?
===添加了上下文信息:
这是来自xmr-stak(https://github.com/fireice-uk/xmr-stak)的函数,其表现不同:
static inline uint64_t _umul128(uint64_t a, uint64_t b, uint64_t* hi)
{
unsigned __int128 r = (unsigned __int128)a * (unsigned __int128)b;
*hi = r >> 64;
return (uint64_t)r;
}
Run Code Online (Sandbox Code Playgroud)
无论C实现是否错误,我都必须在Rust中重新创建精确的计算,因为这是哈希计算所需要的.