2021我的技术与生活|2021 年中总结

src=http___bpic.588ku.com_element_origin_min_pic_18_08_13_fbc58ccae7d9cd06d568855ef32d686d.jpg&refer=http___bpic.588ku.jpg

2021年上半年,我的技术提升以及生活习惯的改变。

技术层

在2013年到2020年,大部分的时间还是在摸索Java、SpringCloud等应用型技术,大都数都是在应用实战方面。自2020年底开始正式进入云原生时代的学习。期间涉及到的可能较多,这里列出几个重要的点:

  • 基于Kubesphere定制化容器云
  • 服务网格ServiceMesh调研
  • 定制化AI引擎到JupyterLab

容器云方面,我调研Kubesphere开源技术,以及结合我们实际需求,开始定制化一些实际需求并开发。完成了Kubesphere的本地部署:

image.png

定制化了基于Loki的日志以及事件收集和查询展示,因为本身Kubesphere暂时只支持基于ES的日志、事件处理。需要对Loki进行注册:

apiVersion: logging.kubesphere.io/v1alpha2
kind: Output
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"logging.kubesphere.io/v1alpha2","kind":"Output","metadata":{"annotations":{},"labels":{"logging.kubesphere.io/component":"logging","logging.kubesphere.io/enabled":"true"},"name":"loki","namespace":"kubesphere-logging-system"},"spec":{"loki":{"host":"loki.loki.svc","port":3100},"matchRegex":"(?:kube|service)\\.(.*)"}}
  labels:
    logging.kubesphere.io/component: logging
    logging.kubesphere.io/enabled: 'true'
  name: loki
  namespace: kubesphere-logging-system
spec:
  loki:
    host: loki.loki.svc
    port: 3100
  matchRegex: '(?:kube|service)\.(.*)'
复制代码

image.png

要将日志输出到loki,执行下面的命令:

cat <<EOF | kubectl apply -f -
apiVersion: logging.kubesphere.io/v1alpha2
kind: Output
metadata:
  name: loki
  namespace: kubesphere-logging-system
  labels:
    logging.kubesphere.io/enabled: "true"
    logging.kubesphere.io/component: logging
spec:
  matchRegex: (?:kube|service)\.(.*)
  loki:
    host: ""
    port: ""
EOF
复制代码

如果是将事件输出到loki,执行:

cat <<EOF | kubectl apply -f -
apiVersion: logging.kubesphere.io/v1alpha2
kind: Output
metadata:
  name: loki-events
  namespace: kubesphere-logging-system
  labels:
    logging.kubesphere.io/enabled: "true"
    logging.kubesphere.io/component: events
spec:
  match: kube_events
  loki:
    host: ""
    port: ""
EOF
复制代码

同时,我们修改了Kubesphere原生的鉴权模式,根据我们的实际需求,结合业务情况来进行鉴权处理。并且,我们添加了隔离空间的概念,这样可以将不同的人归为不同的组,他们的权限也是不一样的。

对于服务网格,我们调研了很流行的开源服务网格的实现Istio,了解到:

Istio 提供了 4 个与服务相关的核心功能,分别是连接(Connect)、安全(Secure)、控制(Control)和观察(Observe)。

  • 连接功能指的是控制服务之间的流量和 API 调用。只需要简单的配置,就可以实现服务之间的超时处理、自动重试和断路器模式,还可以通过基于百分比的流量分离来实现 A/B 测试、红黑部署和金丝雀发布等。Istio 还提供了错误恢复功能,可以增强服务的健壮性。

  • 安全功能指的是自动保护服务的安全,支持服务之间的身份认证、授权管理和通信加密。Istio 提供了一个证书权威机构(Certificate Authority,CA)来管理密钥和证书。在身份认证方面,Istio 支持双向 TLS 认证,以及基于 JWT 的请求身份认证,并可以与 OpenID Connect 提供者进行集成。在授权管理方面,Istio 支持使用 Kubernetes 的自定义资源来配置授权策略。除此之外,Istio 的审计功能可以记录安全相关的历史操作。

  • 控制指的是通过策略来对服务进行配置。Istio 提供了一系列 Kubernetes 中的自定义资源定义来配置 Istio 的不同组件的行为。

  • 观察指的是服务运行时行为的可见性。Istio 收集的性能指标数据可以监控应用的性能。分布式追踪数据可以查看每个请求在服务之间的调用关系,从而更好地了解服务之间的依赖关系。Istio 可以在日志中记录每个请求的源和目标的元数据。

基于API网关,作为应用请求入口,同时,依赖底层支持的服务发现来提供一系列功能。

最后,对于AI引擎定制化JupyterLab,我们基于开源的Jupyter,实现了无需安装配置,在创建Notebook实例后,打开实例即可进行开发。主要如TensorFlow2.0、PyTorch1.0等。该环境中包含已经预装并调试好的AI引擎以及依赖。

image.png

具体的实现方案是:基于NoteBook kernel,我们在Lab中,利用conda集成几种用户常用的独立执行环境。

RUN conda update conda -n base -y
RUN bash
RUN conda init bash
RUN bash
RUN conda create -y -n TensorFlow2.0 python=3.6

RUN conda activate TensorFlow2.0
RUN conda install -y ipykernel
RUN python -m ipykernel install --name TensorFlow2.0
复制代码

生活层

从14年,一直健身的我,自从进入繁忙的工作状态或家事中,就开始颓废了。曾今的每天80个俯卧撑的flag消失了。在今年年初,开始了flag的启动,正式每天下午开始60个俯卧撑的flag,以及每周五晚上的篮球模式。曾今的腹肌到后面的大肚腩,再到现在的腹肌渐显,感觉找到了人生的自信。

实际行动

  • 在每天下午3点,当小米手表闹钟提示的时候,立刻放下手头的工作,起身去找个无人偏僻的地方开始60个俯卧撑
  • 每周五晚上7点,约上小区附近的友人,一起找个小场地开始从小到大的乐趣
  • 每天坚持十点半睡觉

总结

不忘初心,砥砺前行~

掘金年中主题活动 | 2021 我的半程成长之路征文活动正在进行中……

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享