kubeadm部署Kubernetes集群高可用

kubernetes官网

安装环境

ip Docker Version Kubernetes Version 硬件要求
192.168.1.11(master1) 19.03.8 v1.18.1 内存4G,双核CPU
192.168.1.12(master2) 19.03.8 v1.18.1 内存4G,双核CPU
192.168.1.13(master3) 19.03.8 v1.18.1 内存4G,双核CPU
192.168.1.100(VIP)

Kubernetes---StatefulSet

在前面的学习中,发现做的例子都是 Deployment ,且大部分使用 web 应用去做示例,为什么不用 mysql 类似数据库来做示例呢。

在 LNMP 架构中,应该了解过动静分离,也就是动态数据和静态数据,是以是否需要去访问数据库去进行读写数据来区分的。

Kubernetes 同样也区分了有状态应用和无状态应用,之前常用的 Deployment 就是为无状态应用而使用的。本文中提到的 StatefulSet 就是为有状态应用使用的。

Kubernetes---StorageClass(动态供给)

在之前的文章 Kubernetes的数据管理 一文中,介绍了一些 volume 以及 PV 、 PVC 的使用方法,也被称为 静态 PV 供给,因为 PVC 是建立在 PV 的前提下,必须手动创建 PV ,再去创建 PVC 去匹配 PV 获取存储资源。

以上说到的方法中,对于大量 pod 的场景来说,维护成本相当大,对于运维人员也是不友好的。所以 k8s 支持了 PV 的动态供给 — StroageClass。也就是使用了 StorageClass 之后,不需要单独创建 PV,只需要创建 PVC ,就会根据 PVC 的申请自动创建一个 PV,也被称为 动态 PV 供给

Kubernetes---Ingress

据我当下所学,对于 Kubernetes 如何对外暴露服务,一个字—**service**,只要是集群内部要访问 pod,通过创建 service,可以做到使用ip访问,那如果想要对互联网提供服务,应该怎么去做,也不能一直使用 IP 访问,而且对于集群来说也是不安全的。本文提到的 Ingress 就是为了弥补 NodePort 存在的不足而生。

Kubernetes---Taints(污点)和Toleration(容忍度)

我们都知道 k8s 集群中 master 节点默认是存在不可调度的污点的,也就是普通的 pod 默认是不会被调度到 master 节点的,这也是 Taint(污点) 的作用。

在实际应用中,也可能会给 worker 节点也去添加污点,是为了达到避免 Pod 调度到特定的节点中。

本文将会介绍关于节点 Taint 的设置以及如何调度要具有 Taint 的节点

Kubernetes---nodeAffinity(节点亲和性)

在之前的文章 labels控制pod运行位置 提到可以通过 nodeSelector来控制将pod运行到哪台集群节点。

本文中要使用的 nodeAffinity (节点亲和性),其功能与 nodeSelector是类似的,也是根据节点标签来对 pod 进行调度启动

相比 nodeSelectornodeAffinity 更加的灵活,功能多,支持硬策略和软策略

Kubernetes---Health Check(二)

之前的文章 Kubernetes 的 Health Check 一文中提到的健康检查的方式有三种,仅仅只用了 exec 一种方式来演示。

本文将使用一个 yaml 文件,展示 httpGettcpSocket 两种方式怎么使用,两者区别就是修改健康检查部分就可以

直接上示例

Kubernetes---HPA(自动水平伸缩)

在之前的文章 Depolyment中提到的伸缩 ,是通过 Deployment 管理的 ReplicaSet 来手动控制 pod 的伸缩,而在刚接触 Kubernetes 时,就一直听到或者看到各种视频文章教程,都说K8S可以通过对资源利用率的判断,进行 pod 的自动伸缩。本文中,它来了。

基于Containerd部署Kubernetes

当Kubernetes 1.20开始准备弃用Docker,相信很多人在k8s 1.20版本出现的时候,都听说了即将弃用docker,不过还没有完全弃用,但这也是未来的趋势了。k8s的底层还是容器。

具体使用docker和弃用docker的前因后果我就不多说了,本文只是为了使用docker以外的CRI(Container Runtime Interface)来部署Kubernetes。这里就进行单机部署了。

建议使用CentOS 7.5版本以上,这里以7.6为例,配置好网络,可以访问外网

当弃用docker后,可以直接使用containerd来做CRI

Kubernetes的yaml文件使用语法及简单操作(续)

在初学Kubernetes的yaml文件时,很苦恼,到底怎么就找到哪个kind对应哪个apiVersion,曾在本站写过一篇Kubernetes的yaml文件使用语法及简单操作,然而仅仅打算靠着自己慢慢积累将apiVersion对应的kind一一记录下来,甚至也问过很多大佬,怎么才能知道,大佬告诉我用的多了就知道了。这样的回答也是很无奈。可能大佬也还没想过这种问题。

Kubernetes-Prometheus完备监控系统

郑重其事:时区一定要调整,服务器或者虚拟机时区与浏览器时区不一致,会导致最后监控没有数据

Kubernetes加入集群的TOKEN值过期

当Kubernetes集群的master节点init完成后,会输出join命令,以便用户用来将其他节点加入,如下

kubeadm join 192.168.1.11:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:063cf8ade66033addf58f5d1a453aab0b1ec5ff023327bc10156935875baa7ad 

Kubernetes---Helm

开始接触Kubernetes的技术人员都知道,如果要在Kubernetes集群中进行部署应用,需要去自己手动去写yaml文件来启动pod,每个应用可能会需要不止一两种的资源类型,如:service/deployment/pod/PV/PVC等等,使得在Kubernetes集群中部署应用很繁琐,要写很多的yaml文件,也成了新一代运维的掉发新方法

Kubernetes部署Dashboard

基于已经搭建好的Kubernetes集群进行部署Dashboard 下载yaml文件# 代理网络使用者 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml # 国内网络使用者 wget https://www.feiyiblog.com/files/das...

Kubernetes使用kube-ovn网络访问Pod

kube-ovn的搭建,站点文章中已经写过了,点击即可访问 现在是来验证在kube-ovn的情况下,应用放在了Pod中,我们应该怎么去访问,直接访问Pod_ip?节点ip:port?都是可以的 Pod_ip:PortPod_ip的方法就是不需要在Kubernetes中使用NAT,所以要将kube-ovn所在的subnet的NAT关掉,关掉之后,如果进行ping,发现ping包可以出去但无法回...




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0