Openshift 4 学习笔记

DO280 在线课程的笔记。

Openshift 是基于 k8s 的 paas 产品,基本概念与 k8s 差不多。 Openshift 使用 Project 划分不同的 namespace, 隔离不同的资源。

Operator

Openshift 4 引入了 Operator 的概念。Operator 可以帮助管理资源。
Operators usually define custom resources (CR) that store their settings and configurations. An OpenShift administrator manages an operator my editing its custom resources. The syntax of a custom resource is defined by a custom resource definition (CRD).

Operator 通过调用 kubernetes 的 api 来实现它的功能。不过直接调用底层 api 会比较麻烦,因此有一个 Operator Software Development Kit (Operator SDK) 来帮助开发 Operator.

Operator Life Cycle Manager (OLM) 负责管理 Operator 的生命周期,它本身也是一个 Operator.
继续阅读“Openshift 4 学习笔记”

Java BigDecimal 转换为 Parquet Decimal

记录个问题。有用户想通过 Java 自行生成 Parquet 文件,不通过 Hive, Spark 等软件。

用户直接将 BigDecimal toByteArray(),然后用 Hive/Athena 都读不出来正确的数值。查看 Hive 的做法,它实际上是用 unscaledValue() 转换成 BigInt,再 toByteArray() 存入 Parquet 的。
继续阅读“Java BigDecimal 转换为 Parquet Decimal”

Namespace 在 Kernel 里是怎么实现的?以 mount namespace 为例


有很多文章都介绍了在应用层面怎么调用 CLONE 的参数来进行 namespace 隔离,于是好奇 namespace 在 kernel 层面是怎么实现的,比如 kernel 需要做哪些改动来提供 namespace 的功能。


应用层面进行namespace隔离的方法

对于应用程序,例如 docker, 可以通过调用 clone(), unshare(), setns() 来对 namespace 进行操作。Coolshell 有几篇通俗易懂的文章可供详细了解[1].
继续阅读“Namespace 在 Kernel 里是怎么实现的?以 mount namespace 为例”

EC2两张网卡连接两个子网,分别关联EIP,其中一个EIP ping不通,怎么办?

问题


- 一个有两张网卡的 EC2 instance (RHEL7.5),每个网卡分别对应一个public subnet, 每个网卡也关联一个 Public IP.
- 从其他网络 ping 这两个 IP 地址,发现其中一个IP能ping通,另一个IP不能ping通。

[ec2-user@ip-172-31-30-14 ~]$ ping 52.80.82.70 -c2
PING 52.80.82.70 (52.80.82.70) 56(84) bytes of data.
64 bytes from 52.80.82.70: icmp_seq=1 ttl=63 time=1.71 ms
64 bytes from 52.80.82.70: icmp_seq=2 ttl=63 time=1.80 ms

[ec2-user@ip-172-31-30-14 ~]$ ping 52.81.2.166 -c2
PING 52.81.2.166 (52.81.2.166) 56(84) bytes of data.

--- 52.81.2.166 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1004ms

继续阅读“EC2两张网卡连接两个子网,分别关联EIP,其中一个EIP ping不通,怎么办?”