跳至主要內容
SSH密钥登录

SSH密钥登录

SSH默认采用密码登录,这种方法有很多缺点,简单的密码不安全,复杂的密码不容易记忆,每次手动输入也很麻烦。秘钥登录是比密码登录更好的解决方案。

密钥是什么?

密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥,分为公钥(public key)和私钥(private key)。

SSH密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥必须私密保存,不能泄露;公钥是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。


J.F.Gaufrid大约 10 分钟Linux密钥SSH
Kubernetes和Docker网络原理(一)

Kubernetes和Docker网络原理(一)

Docker 网络实现

平时在进行Kubernetes开发和运维的时候,接触到的最多的概念就是Docker和Kubernetes的网络概念了,尤其是Kubernetes各种各样的IP、Port,有时候会混淆,因此有必要对Docker和Kubernetes的底层网络实现进行学习。这篇文章就先针对Docker的网络实现进行一下分析介绍。

Docker的网络基础

Docker的网络实现主要利用到的还是Linux网络相关的技术,如Network Namespace、Veth设备对、网桥、iptables、路由。


J.F.Gaufrid大约 8 分钟LinuxDockerKubernetes
Kubernetes和Docker网络原理(三)

Kubernetes和Docker网络原理(三)

Service通信

kube-proxy运行机制

为了支持集群的水平扩展、高可用性,Kubernetes抽象出了Service的概念。Service是对一组Pod的抽象,它会根据访问策略(如如负载均衡策略)来访问这组Pod。Kubernetes在创建服务时会为服务分配一个虚拟的IP地址,客户端通过访问这个虚拟的IP地址来访问服务,服务则负责将请求转发到后端的Pod上。起到一个类似于反向代理的作用,但是它和普通的反向代理还是有一些不同:首先,它的Service的IP地址,也就是所谓的ClusterIP是虚拟的,想从外面访问还需要一些技巧;其次,它的部署和启停是由Kubernetes统一自动管理的。


J.F.Gaufrid大约 4 分钟LinuxDockerKubernetes
Kubernetes和Docker网络原理(二)

Kubernetes和Docker网络原理(二)

Kubernetes Pod 间通信

之前文章中主要关于Docker的网络实现进行了介绍和探讨,对于Docker网络而言,其最大的局限性在于跨主机的容器通信方案上存在空白,而Kubernetes作为适合大规模分布式集群的容器编排平台,其在网络实现层面上主要解决的问题就包括了如下几点:

  • 容器间通信
  • Pod间通信
  • Pod与Service通信
  • 集群内外通信

这篇博文主要针对Kubernetes的容器间通信和Pod间通信进行介绍和探讨,之后再通过单独一篇文章去探讨Pod与Service的通信,也就是kube-proxy工作原理和Service机制相关。


J.F.Gaufrid大约 7 分钟LinuxDockerKubernetes
Kubernets 架构

Kubernets 架构

Kubernetes 主要核心组件

  • etcd 保存了整个集群的状态;
  • kube-apiserver 供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • kube-controller-manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • kube-scheduler 负责资源的调度,按照预定的调度策略将pod调度到相应的机器上;
  • kubelet 负责容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime 负责镜像管理以及Pod和容器的真正运行(CRI),默认的容器运行时为Docker
  • kube-proxy 负责为Service提供cluster内部的容器服务发现和负载均衡

J.F.Gaufrid小于 1 分钟Linux容器化Kubernetes
Linux Shell中2>&1的含义解释

Linux Shell中2>&1的含义解释

在Linux系统中0 1 2是一个文件描述符

名称 代码 操作符 Java中表示 Linux 下文件描述符(Debian 为例)
标准输入(stdin) 0 < 或 << System.in /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout) 1 >, >>, 1> 或 1>> System.out /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr) 2 2> 或 2>> System.err /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

J.F.Gaufrid大约 2 分钟LinuxLinuxshell
Linux文件系统

Linux文件系统

Linux文件系统简介

Linux支持的文件系统格式很多,主要分为以下几类:

  • 磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见格式有:Ext2、Ext3、Ext4、JFS、NTFS、UFS、FAT、FAT16、FAT32等
  • 网络文件系统:是可以远程访问的文件系统,在服务器端仍是本地磁盘文件系统,客户机通过网络远程访问数据。常见格式有:NFS、Samba等
  • 专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS、PROCFS等

J.F.Gaufrid大约 7 分钟Linux文件系统磁盘分区