Blog

Kubernetes Nginx Ingress Controller从0.x到1.x升级指南

2021-11-24
Kubernetes

最近把一套K8S集群的Nginx Ingress Controller从v0.33升级到了v1.0.5,属于主版本升级,在这里整理一下升级的过程和遇到的问题。 这套k8s集群的信息如下:

  • k8s版本为v1.21.5
  • 使用Ingress将集群外部http流量接入到集群内部,当前集群中共有三十多个Ingress资源
  • ingress controller使用的是https://github.com/kubernetes/ingress-nginx/,版本是v0.33,基于yaml文件格式的Manifest部署

升级前的准备工作 #

修改集群中的Ingress资源使其与1.x版本的Nginx Ingress Controller以及后续版本的k8s(>=1.22)兼容,修改主要涉及两个方面:

...

Go源码学习: 切片slice的内部数据结构

2021-11-16
Go

Go语言中的切片slice的底层数据结构是数组,这是即使是Go的初学者都了解的。 前面我们学习了string类型在运行时由reflect.StringHeader表示,StringHeader可以理解为string在运行时的"描述符",StringHeader由Data和Len两个字段组成,Data是指向string底层byte数组的指针,Len是string的长度。

...

Go源码学习: string的内部数据结构

2021-11-15
Go

前面在学习Go程序进程的内存布局时,分析了一个Go程序在Linux下ELF文件格式经过简化后大致如下图所示:

go-elf-fmt.png

Go二进制文件ELF主要有这几个section组成: .text, .rodata, .data, .noptrdata, .bss, .noptrbss.rodata中存放的是常量数据,程序中的字面量在编译时会被放到这个section中,那么字符串字面量也将放到这个section中。 在执行程序时,ELF文件被加载到内存中,相同权限的Section会被对应到一个Segment中,大致是下图的内存加载结构:

...

基于repmgr实现PostgreSQL的主备高可用

2021-11-14
Postgresql

前面已经在两台CentOS 7服务器上从源码编译安装了PostgreSQL,当前这两台服务器的PostgreSQL数据库是相互独立,它们之间没有任何关系。 本文将介绍基于repmgr的postgresql主备高可用方案,使用repmgr将这两个PostgreSQL设置为一个基本的复制集群,其占用一个作为主服务(primary),另一个作为备用服务(standby)。

...

PostgreSQL的基础使用指南

2021-11-13
Postgresql

1.连接到数据库 #

1#psql -h 服务器 -p 端口地址 -U 用户名 -d 数据库
2psql -h 127.0.0.1 -p 5432 -U <dbuser> -d <dbname>

连接到数据库,进入PostgreSQL提示符即(psql shell)后,可以使用\c dbname dbuser切换登录用户,使用SELECT current_user;查看当前连接使用的数据库用户。

...

从源码编译安装PostgreSQL 13.x

2021-11-13
Postgresql

PostgreSQL是一个开源的对象-关系数据库系统,经过十多年的开发和改进,PostgreSQL已在可靠性、稳定性上已经十分强大,并且被应用的十分广泛。 很多云原生方向的产品例如开源镜像仓库Harbor、API网关Kong都使用了PostgreSQL。本文将介绍从源码编译安装PostgreSQL 13.5的具体过程。

...

Apache Pulsar学习笔记13: 授权和权限管理

2021-11-06
Pulsar

上一节学习了如何为Pulsar开启基于JWT的身份认证。 Pulsar使用身份认证提供者(Authentication Provider)识别客户端,但如果只启用身份认证,那么只要客户端通过认证就可以访问集群中的所有资源,因此在启用身份认证的基础上,还必须为Pulsar开启授权以进行权限管理。 其实上一节在学习JWT身份认证时,已经开启了授权。本节将详细学习一下Pulsar的授权和权限管理。

...

Go源码学习: 关闭channel的内部实现是什么样的?

2021-11-05
Go

作为一个Gopher在刚开始学习channel的时候,一定见过以下关于关闭channel会发生什么情况的总结:

  • 关闭一个值为nil的channel将会panic
  • 关闭一个已经关闭的channel将会panic
  • 向一个已经关闭的channel发送数据会panic

本节将学习关闭channel,即close(ch)的内部实现。关闭channel实际上调用的是runtime.closechan这个函数。

...

Apache Pulsar学习笔记12: 开启基于JWT的身份认证

2021-11-04
Pulsar

Pulsar支持可插拔的身份认证和授权机制,Pulsar Proxy或者Pulsar Broker都支持该机制。认证和授权机制一起保证了客户端对Pulsar Topic、命名空间、租户的访问权限。

默认情况下,Pulsar并不会启用加密、身份认证和授权机制。之前我们使用pulsar-admin,pulsar-client等命令行工具,使用Java或Go语言开发的Consumer和Produmer,访问使用docker容器启动的单机Pulsar时,都未用到任何身份认证信息。 也就是说,Pulsar的默认配置是完全开放状态的,任何人都可以访问它。因此,必须启用Pulsar的认证和授权机制,为Pulsar各个组件开启安全防护。

...

Apache Pulsar学习笔记11: 使用分区Topic

2021-11-03
Pulsar

分区Topic的概念 #

前面在学习Topic的时候,已经了解了分区Topic的基本概念。在Pulsar中一个Topic只能由一个Broker提供服务,而单个Topic的吞吐量受限于为其提供服务的Broker的计算能力,这限制了Topic的最大吞吐量。 Pulsar通过分区Topic来提高吞吐量,分区Topic在底层通过N个内部Topic实现,N就是分区的数量。

...

© 2024 青蛙小白