diff --git "a/java\344\273\216\345\205\245\351\227\250\345\210\260\346\224\276\345\274\203/javaSE\345\237\272\347\241\200/2\343\200\201\345\237\272\347\241\200\345\255\246\344\271\240.md" "b/java\344\273\216\345\205\245\351\227\250\345\210\260\346\224\276\345\274\203/javaSE\345\237\272\347\241\200/2\343\200\201\345\237\272\347\241\200\345\255\246\344\271\240.md" index 431b9878a1e455d7dc05ad4255130a39b055a080..4357c1db8284fa49813cf1c32c5a73d95efa8933 100644 --- "a/java\344\273\216\345\205\245\351\227\250\345\210\260\346\224\276\345\274\203/javaSE\345\237\272\347\241\200/2\343\200\201\345\237\272\347\241\200\345\255\246\344\271\240.md" +++ "b/java\344\273\216\345\205\245\351\227\250\345\210\260\346\224\276\345\274\203/javaSE\345\237\272\347\241\200/2\343\200\201\345\237\272\347\241\200\345\255\246\344\271\240.md" @@ -691,3 +691,11 @@ char: - `const` (Java 10 引入,但未激活) - `goto` (未在Java中使用) +## 总结:标识符和关键字的区别 + +可以结合现实生活中的道德和法律去理解,标识符是生活中的道德,可以违背,但是...哈哈,违背了,你就是个没有道德的人呐 + +关键字可以理解成现实生活中的法律,如果违背了,可能就会受到一些强制性的手段啦... + +# 运算符 + diff --git "a/k8s\346\234\215\345\212\241/0-README.md" "b/k8s\346\234\215\345\212\241/0-README.md" new file mode 100644 index 0000000000000000000000000000000000000000..b44799e9184100e20c9444948134e663cb451ab0 --- /dev/null +++ "b/k8s\346\234\215\345\212\241/0-README.md" @@ -0,0 +1,6 @@ +# 学习前需掌握的前置知识 + +学习k8s需要你掌握Linux基础知识、docker及网络知识,这样会让你学习起来很轻松,如果没有掌握的话,你可以学习本仓库中相对应内容。 + +学习k8s你可以尽量了解nginx、tomcat等web服务器及其它工作中常用的服务,这样你可以使用k8s并部署,使你学习起来更加得心应手。 + diff --git "a/k8s\346\234\215\345\212\241/1-k8s\346\234\215\345\212\241\346\246\202\350\277\260.md" "b/k8s\346\234\215\345\212\241/1-k8s\346\234\215\345\212\241\346\246\202\350\277\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..99b821a5e29208dc26c46608d971804f3199f65d --- /dev/null +++ "b/k8s\346\234\215\345\212\241/1-k8s\346\234\215\345\212\241\346\246\202\350\277\260.md" @@ -0,0 +1,217 @@ +# 来源 + +中文官网:https://kubernetes.io/zh + +中文社区:https://www.kubernetes.org.cn/ + +# 应用部署方式演变介绍 + +**应用部署方式演变** + +在部署应用程序的方式上,主要经历了三个时代: + +- **传统部署** + +互联网早期,会直接将应用程序部署在物理机上 + +优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响 + +- **虚拟化部署** + +可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境 + +优点:程序环境不会相互产生影响,提供了一定程度的安全性缺点:增加了操作系统,浪费了部分资源 + +- **容器化部署** + +与虚拟化类似,但是共享了操作系统 + +优点:可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署 + +​ ![0](data:image/png;base64,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) + +容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说: + +- 一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器 +- 当并发访问量变大的时候,怎么样做到横向扩展容器数量 + +这些容器管理的问题统称为**容器编排**问题,为了解决这些容器编排问题,就产生了一些容器编排的软件: + +- Swarm:Docker自己的容器编排工具 +- Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用 +- Kubernetes:Google开源的的容器编排工具 + +![image-20240914103153091](./images/image-20240914103153091.png) + +# 概述 + +![image-20240914103203275](./images/image-20240914103203275.png) + +kubernetes,简称K8s,是用8 代替8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。 + +传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 + +新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的。 + +Kubernetes 是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes 能够进行应用的自动化部署和扩缩容。在Kubernetes 中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。 + +Kubernetes 积累了作为Google 生产环境运行工作负载15 年的经验,并吸收了来自于社区的最佳想法和实践。 + +# K8S功能 + +### 自动装箱 + +基于容器对应用运行环境的资源配置要求自动部署应用容器 + +### 自我修复(自愈能力) + +当容器失败时,会对容器进行重启,当所部署的Node节点有问题时,会对容器进行重新部署和重新调度,当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务,如果某个服务器上的应用不响应了,Kubernetes会自动在其它的地方创建一个 + +### 水平扩展 + +通过简单的命令、用户UI 界面或基于CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁 + +> 当我们有大量的请求来临时,我们可以增加副本数量,从而达到水平扩展的效果 + +### 服务发现 + +用户不需使用额外的服务发现机制,就能够基于Kubernetes 自身能力实现服务发现和负载均衡 + +> 对外提供统一的入口,让它来做节点的调度和负载均衡, 相当于微服务里面的网关? + +### 滚动更新 + +可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新 + +> 添加应用的时候,不是加进去就马上可以进行使用,而是需要判断这个添加进去的应用是否能够正常使用 + +### 版本回退 + +可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退 + +> 类似于Git中的回滚 + +### 密钥和配置管理 + +在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。 + +### 存储编排 + +自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要 + +存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务 + +### 批处理 + +提供一次性任务,定时任务;满足批量数据处理和分析的场景 + +# k8s架构 + +一个kubernetes集群主要是由**控制节点(master)**、**工作节点(node)**构成,每个节点上都会安装不同的组件。 + +**master:集群的控制平面,负责集群的决策 ( 管理 )** + +- **APIServer**:资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制**(资源操作的唯一入口)** +- **etcd**:**负责存储集群中各种资源对象的信息**(存储数据)** +- **Scheduler**: 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上**(负责pod调度)** +- **controller manager**:**负责维护集群的状态**,比如程序部署安排、故障检测、自动扩展、滚动更新等 + +**node/slave/worker**:**集群的数据平面,负责为容器提供运行环境 ( 干活 )** + +- **Kubelet**:管理Pod的生命周期上报节点状态,包括Pod和Node节点; +- **kube-proxy**:负责Pod的访问路由及负载均衡; + +![image-20240914102731846](./images/image-20240914102731846.png) + +# K8S常用术语 + +## OCI: + +OCI(Open Container Initiative)是指**开放容器标准**,它是一个轻量级、开放的治理结构,致力于围绕容器格式和运行时创建开放的行业标准 + +通过支持OCI规范,Kubernetes可以与多种容器运行时兼容,这使得K8s在容器编排和管理方面更加灵活和强大 + +## CRI: + +CRI(Container Runtime Interface)是Kubernetes定义的一组与容器运行时进行交互的接口。 + +CRI是Kubernetes用来与容器运行时进行交互的标准接口。它定义了一套RPC(远程过程调用)API,这些API被用来管理容器的生命周期。 + +目前实现了CRI spec的Runtime有**Docker Engine、containerd、CRI-O、Mirantis Container Runtime(Docker企业版)**等。 + +已经弃用的有**docker-shim** + +## CNI: + +CNI(Container Network Interface)是一个规范和框架,它允许Kubernetes通过插件化的方式集成各种网络解决方案,以实现集群内部容器之间的网络通信。 + +支持的网络模式:Overlay Network,Underlay Network,flannel,calico,cannel,cilium + +### 常用的CNI网络插件: + +1. Flannel:Flannel是一个开源的容器网络组件,用于为Kubernetes集群提供跨主机的容器网络。它支持多种后端网络,如UDP、VXLAN和Host-gw等。 +2. Calico是一个开源的容器网络解决方案,它使用BGP路由协议来构建容器之间的网络连接。Calico提供了高性能、可扩展和安全的容器网络。 + +# k8s的重大事件 + +2020年k8s宣布弃用docker-shim,2022年k8s的1.24版本正式弃用docker-shim,这个时候如果容器使用docker的话,需要单独部署docker-shim,docker-shim是属于CRI接口。所以后面的章节是采用K8s-1.23.17版本 + +# K8S核心概念 + +### Pod + +- Pod是K8s中最小的单元 +- 一组容器的集合 +- 共享网络【一个Pod中的所有容器共享同一网络】 +- 生命周期是短暂的(服务器重启后,就找不到了) + +### Volume + +- 声明在Pod容器中可访问的文件目录 +- 可以被挂载到Pod中一个或多个容器指定路径下 +- 支持多种后端存储抽象【本地存储、分布式存储、云存储】 + +### Controller + +- 确保预期的pod副本数量【ReplicaSet】 +- 无状态应用部署【Deployment】 + - 无状态就是指,不需要依赖于网络或者ip +- 有状态应用部署【StatefulSet】 + - 有状态需要特定的条件 +- 确保所有的node运行同一个pod 【DaemonSet】 +- 一次性任务和定时任务【Job和CronJob】 + +### Deployment + +- 定义一组Pod副本数目,版本等 +- 通过控制器【Controller】维持Pod数目【自动回复失败的Pod】 +- 通过控制器以指定的策略控制版本【滚动升级、回滚等】 + +![image-20240914103713522](./images/image-20240914103713522.png) + +### Service + +- 定义一组pod的访问规则 +- Pod的负载均衡,提供一个或多个Pod的稳定访问地址 +- 支持多种方式【ClusterIP、NodePort、LoadBalancer】 + +可以用来组合pod,同时对外提供服务 + +### Label + +label:标签,用于对象资源查询,筛选 + +### Namespace + +命名空间,逻辑隔离 + +- 一个集群内部的逻辑隔离机制【鉴权、资源】 +- 每个资源都属于一个namespace +- 同一个namespace所有资源不能重复 +- 不同namespace可以资源名重复 + +### API + +我们通过Kubernetes的API来操作整个集群 + +同时我们可以通过 kubectl 、ui、curl 最终发送 http + json/yaml 方式的请求给API Server,然后控制整个K8S集群,K8S中所有的资源对象都可以采用 yaml 或 json 格式的文件定义或描述 \ No newline at end of file diff --git "a/k8s\346\234\215\345\212\241/2-K8S\345\256\211\350\243\205\351\203\250\347\275\262.md" "b/k8s\346\234\215\345\212\241/2-K8S\345\256\211\350\243\205\351\203\250\347\275\262.md" new file mode 100644 index 0000000000000000000000000000000000000000..c8f894118a022f4aff66853f2aab8dc50dc82675 --- /dev/null +++ "b/k8s\346\234\215\345\212\241/2-K8S\345\256\211\350\243\205\351\203\250\347\275\262.md" @@ -0,0 +1,605 @@ +# k8s集群安装的方式 + +## 官方推荐的两种方式 + +- #### 二进制安装 + +需要运维人员手动部署各个组件,包括但不限于:证书,启动脚本,配置文件等。就算是老手部署集群,所有环境准备就绪的情况下,也得40min+。 + +从GitHub下载发行版的二进制包,手动部署每个组件,组成kubernetes集群。 + +- #### kubeadm一键安装 + +基于容器部署k8s集群,大部分组件都是基于容器部署的,因此部署速度较快,新手部署仅需1~2min搞定。 + +kubeadm是一个K8S部署工具,提供kubeadm init和kubeadm join,用于快速部署kubernetes集群。 + +## 其它方式安装 + +- **yum:** + +已废弃,目前支持的最新版本为2017年发行的1.5.2版本。 + +- **minikube:** + +适合开发环境,能够快速在Windows或者Linux构建K8S集群。 + +参考链接: + +https://minikube.sigs.k8s.io/docs/ + +- **rancher:** + +基于K8S改进发行了轻量级K8S,让K3S孕育而生。 + +参考链接: + +https://www.rancher.com/ + +- **KubeSphere:** + +青云科技基于开源KubeSphere快速部署K8S集群。 + +参考链接: + +https://kubesphere.com.cn + +- **kuboard:** + +也是对k8s进行二次开发的产品,新增了很多独有的功能。 + +参考链接: + +https://kuboard.cn/ + +- **kubeasz:** + +使用ansible部署,扩容,缩容kubernetes集群,安装步骤官方文档已经非常详细了。 + +参考链接: + +https://github.com/easzlab/kubeasz/ + +- **第三方云厂商:** + +比如aws(EKS),阿里云(ACK),腾讯云(TKE),华为云(CCE),京东云等云厂商均有K8S的相关SAAS产品。 + +- **更多的第三方部署工具:** + +参考链接: + + https://landscape.cncf.io/ + +# 基于kubeadm安装单节点K8S + +本章中基于kubeadm安装单节点K8S进行学习,后续会更新其它方式安装的方式 + +## 环境准备: + +ubuntu 22.04 + +| 主机名 | IP地址 | 配置 | 描述 | +| -------- | --------- | ---- | ------------------------------------- | +| master30 | 10.0.0.30 | 2c4g | 安装docker、kubelet、kubectl、kubeadm | +| worker31 | 10.0.0.31 | 2c4g | 安装docker、 | +| worker32 | 10.0.0.32 | 2c4g | 安装docker、 | + +## 步骤一:前提准备(所有节点操作) + +参考连接 + +https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ + +#### **步骤一-1:关闭swap分区** + +```shell +#关闭swap分区 +root@master:~# swapoff -a && sysctl -w vm.swappiness=0 +vm.swappiness = 0 +root@master:~# sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab + +#检查swap分区,为0B即可 +root@master:~# free -h + total used free shared buff/cache available +Mem: 3.8Gi 337Mi 2.8Gi 1.0Mi 698Mi 3.2Gi +Swap: 0B 0B 0B +root@master:~# +``` + +#### **步骤二-2:确保各个节点MAC地址或product_uuid唯一** + +```shell +root@master:~# cat /sys/class/dmi/id/product_uuid +5bef4d56-fbf2-045e-a104-dad2e4c6d809 +root@master:~# +#温馨提示: +# 一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 +# Kubernetes使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。 +``` + +#### **步骤二-3:检查各节点之间网络是否互通** + +```shell +#检查30 +[root@master ~]# ping 10.0.0.30 -c 1 +PING 10.0.0.30 (10.0.0.30) 56(84) bytes of data. +64 bytes from 10.0.0.30: icmp_seq=1 ttl=64 time=0.032 ms + +--- 10.0.0.30 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 0ms +rtt min/avg/max/mdev = 0.032/0.032/0.032/0.000 ms + +#检查31 +[root@master ~]# ping 10.0.0.31 -c 1 +PING 10.0.0.31 (10.0.0.31) 56(84) bytes of data. +64 bytes from 10.0.0.31: icmp_seq=1 ttl=64 time=0.589 ms + +--- 10.0.0.31 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 0ms +rtt min/avg/max/mdev = 0.589/0.589/0.589/0.000 ms + +#检查32 +[root@master ~]# ping 10.0.0.32 -c 1 +PING 10.0.0.32 (10.0.0.32) 56(84) bytes of data. +64 bytes from 10.0.0.32: icmp_seq=1 ttl=64 time=0.353 ms + +--- 10.0.0.32 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 0ms +rtt min/avg/max/mdev = 0.353/0.353/0.353/0.000 ms + +``` + +#### **步骤二-4:允许iptable检查桥接流量** + +```shell +[root@master ~]# cat < /dev/null +``` + +最后安装 + +``` +apt-get -y update +apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +``` + +启动docker + +```shell +#启动docker +[root@master ~]# systemctl enable --now docker +Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install. +Executing: /lib/systemd/systemd-sysv-install enable docker + +#检查版本 +[root@master ~]# docker --version +Docker version 27.2.1, build 9e34c9b + +#检查是否启动成功 +[root@master ~]# systemctl status docker +● docker.service - Docker Application Container Engine + Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) + Active: active (running) since Sat 2024-09-14 11:04:09 CST; 1min 25s ago +TriggeredBy: ● docker.socket + Docs: https://docs.docker.com + Main PID: 4262 (dockerd) + Tasks: 9 + Memory: 22.7M + CPU: 1.039s + CGroup: /system.slice/docker.service + └─4262 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock + +``` + +配置镜像加速可参考本仓库中docker相关的内容 + +#### **步骤二-8:所有节点修改docker的cgroup的管理进程为systemd** + +vim /etc/docker/daemon.json + +```shell +{ + #主要添加下面这行内容 + "exec-opts": ["native.cgroupdriver=systemd"] +} +``` + +检查 + +```shell +[root@worker31 ~]# docker info | grep "Cgroup Driver" + Cgroup Driver: systemd +``` + +## 步骤二:安装kubeadm,kubelet,kubectl(所有节点操作) + +安装说明: + +``` +kubeadm:用来初始化集群的指令。 +kubelet:在集群中的每个节点上用来启动Pod和容器等。 +kubectl:用来与集群通信的命令行工具。 + +注意事项: +kubeadm不能帮你安装或者管理kubelet或kubectl,所以你需要确保它们与通过kubeadm安装的控制平面(master)的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 + +然而,控制平面与kubelet间的相差一个次要版本不一致是支持的,但kubelet的版本不可以超过"API SERVER"的版本。 例如,1.7.0版本的kubelet可以完全兼容1.8.0版本的"API SERVER",反之则不可以。 +``` + +#### **K8S集群所有节点配置软件源和安装包** + +参考链接:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-linux/ + +```shell +#更新源,安装https证书相关之类的依赖 +apt-get update -y && apt-get install -y apt-transport-https +curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - +#配置k8s相关的源 +cat </etc/apt/sources.list.d/kubernetes.list +deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main +EOF +#再次更新源 +apt-get update -y + + +#查看支持的版本 +apt-cache madison kubeadm + +#安装指定的版本 +apt-get install -y kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00 + +#设置开机自启动 +systemctl enable --now kubelet +``` + +## **步骤三:初始化master节点:** + +#### **步骤三-1:使用kubeadm命令初始化master节点** + +```shell +kubeadm init --kubernetes-version=v1.23.17 --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16 --service-dns-domain=huangsir.com + + +命令解释: +--kubernetes-version: +指定K8S master组件的版本号。 +--image-repository:指定下载k8s master组件的镜像仓库地址。 +--pod-network-cidr:指定Pod的网段地址。 +--service-cidr:指定SVC的网段 +--service-dns-domain:指定service的域名。若不指定,默认为"cluster.local"。 + +这儿指定的两个网段,我们后面会补充是为什么 +``` + +初始化完成界面 + +![image-20240914112311899](./images/image-20240914112311899.png) + +**补充:使用kubeadm初始化集群时,可能会出现如下的输出信息:(了解)** + +``` + +[init] +使用初始化的K8S版本。 + +[preflight] +主要是做安装K8S集群的前置工作,比如下载镜像,这个时间取决于你的网速。 + +[certs] +生成证书文件,默认存储在"/etc/kubernetes/pki"目录哟。 + +[kubeconfig] +生成K8S集群的默认配置文件,默认存储在"/etc/kubernetes"目录哟。 + +[kubelet-start] + 启动kubelet, + 环境变量默认写入:"/var/lib/kubelet/kubeadm-flags.env" + 配置文件默认写入:"/var/lib/kubelet/config.yaml" + +[control-plane] +使用静态的目录,默认的资源清单存放在:"/etc/kubernetes/manifests"。 +此过程会创建静态Pod,包括"kube-apiserver","kube-controller-manager"和"kube-scheduler" + +[etcd] +创建etcd的静态Pod,默认的资源清单存放在:""/etc/kubernetes/manifests" + +[wait-control-plane] +等待kubelet从资源清单目录"/etc/kubernetes/manifests"启动静态Pod。 + +[apiclient] +等待所有的master组件正常运行。 + +[upload-config] +创建名为"kubeadm-config"的ConfigMap在"kube-system"名称空间中。 + +[kubelet] +创建名为"kubelet-config-1.22"的ConfigMap在"kube-system"名称空间中,其中包含集群中kubelet的配置 + +[upload-certs] +跳过此节点,详情请参考”--upload-certs" + +[mark-control-plane] +标记控制面板,包括打标签和污点,目的是为了标记master节点。 + +[bootstrap-token] +创建token口令,例如:"kbkgsa.fc97518diw8bdqid"。 +如下图所示,这个口令将来在加入集群节点时很有用,而且对于RBAC控制也很有用处哟。 + +[kubelet-finalize] +更新kubelet的证书文件信息 + +[addons] +添加附加组件,例如:"CoreDNS"和"kube-proxy” +``` + +#### **步骤三-2:拷贝授权文件,用于管理K8S集群** + +步骤三-1中初始化界面完成的地方 + +``` +mkdir -p $HOME/.kube +sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config +sudo chown $(id -u):$(id -g) $HOME/.kube/config +``` + +#### **步骤三-3:查看master组件状态** + +```shell +[root@master ~]# kubectl get cs +Warning: v1 ComponentStatus is deprecated in v1.19+ +NAME STATUS MESSAGE ERROR +scheduler Healthy ok +controller-manager Healthy ok +etcd-0 Healthy {"health":"true","reason":""} + +``` + +## **步骤四:将worker节点加入集群中(worker节点执行)** + +步骤三-1中初始化界面完成的地方 + +31节点和32节点都需要执行 + +``` +kubeadm join 10.0.0.30:6443 --token v7jfuf.s7d9zocx87snogaj \ + --discovery-token-ca-cert-hash sha256:c26164d8c47241892edd4663f7d0aeecacd254d07b789df4dfe9210dfd790262 +``` + +## **步骤五:master节点检查状态** + +```shell +[root@master ~]# kubectl get nodes +NAME STATUS ROLES AGE VERSION +master NotReady control-plane,master 9m16s v1.23.17 +worker31 NotReady 47s v1.23.17 +worker32 NotReady 40s v1.23.17 + + +#温馨提示: +#此时注意,所有的工作节点均处于"NotReady"状态,原因是没有安装CNI插件。 +``` + +## **步骤六:安装CNI插件(master节点执行)** + +```shell +[root@master ~]# cd ~ +#下载插件 +[root@master ~]# wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml +... +Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected. +HTTP request sent, awaiting response... 200 OK +Length: 4406 (4.3K) [application/octet-stream] +Saving to: ‘kube-flannel.yml’ + +kube-flannel.yml 100%[==========================================================================================================================================>] 4.30K --.-KB/s in 0s + +2024-09-14 11:32:13 (8.41 MB/s) - ‘kube-flannel.yml’ saved [4406/4406] + + +#修改CNI的网段为10.100.0.0 +[root@master ~]# sed -i 's#10.244.0.0#10.100.0.0#' kube-flannel.yml + + +#应用资源清单 +[root@master ~]# kubectl apply -f kube-flannel.yml +namespace/kube-flannel created +serviceaccount/flannel created +clusterrole.rbac.authorization.k8s.io/flannel created +clusterrolebinding.rbac.authorization.k8s.io/flannel created +configmap/kube-flannel-cfg created +daemonset.apps/kube-flannel-ds created +[root@master ~]# + +``` + +## **步骤七:查看pod是否创建成功** + +```shell +#查看flannel的pod,需要保证状态都为Running +[root@master ~]# kubectl get pods -o wide -n kube-flannel +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +kube-flannel-ds-9hz9c 1/1 Running 0 2m15s 10.0.0.31 worker31 +kube-flannel-ds-cx98g 1/1 Running 0 2m15s 10.0.0.30 master +kube-flannel-ds-pjwhv 1/1 Running 0 2m15s 10.0.0.32 worker32 + +#查看节点状态,需要保证状态为Ready +[root@master ~]# kubectl get nodes +NAME STATUS ROLES AGE VERSION +master Ready control-plane,master 14m v1.23.17 +worker31 Ready 5m51s v1.23.17 +worker32 Ready 5m44s v1.23.17 + +``` + +## 步骤八:**检查所有节点的网卡是否存在cni0和flannel.1** + +``` +ip a +#需要注意的是,一个节点中需要同时存在cni0和flannel.1两块网卡, +#且同一个节点的两块网卡需要在同一个网段。 +#如果网卡缺少cni0可以执行以下命令新建,需要注意网段 +#假设 master231的flannel.1是10.100.0.0网段。 +ip link add cni0 type bridge +ip link set dev cni0 up +ip addr add 10.100.2.1/24 dev cni0 +``` + +![image-20240914113752551](./images/image-20240914113752551.png) + +## 步骤九:配置kubectl命令自动补全(master节点执行) + +``` +apt -y install bash-completion +kubectl completion bash > ~/.kube/completion.bash.inc +echo "source '$HOME/.kube/completion.bash.inc'" >> $HOME/.bash_profile +source $HOME/.bash_profile +#配置完成后,换一个客户端连接试一下 +``` + +到此,一个简单的K8S集群安装就完成了,大家可以在自己虚拟机拍个快照防止出现意外哦 + +# 补充 + +## kubeadm、kubectl、kubelet各个组件的区别? + +- kubeadm:用来初始化集群的指令。 +- kubelet:在集群中的每个节点上用来启动Pod和容器等。 +- kubectl:用来与集群通信的命令行工具。 + +## K8S集群中的网段说明 + +这儿也就相当于步骤三执行的命令解释,K8S集群中是存在几个网段的,且每个网段都有自己的含义 + +- 宿主机网段 + +这个很好理解,该网段是给宿主机通信使用的,网段是10.0.0.0/24 + +- kubelet使用的网段 + +同一个worker节点中的每个pod也需要进行网络通信,所以每个pod需要分配一个IP地址,所以kubelet也需要给它一个网段 + +- service使用的网段 + +service用户管理pod,pod将请求发给service,由service负载路由到指定的pod,这里也需要一个网段 + +- CNI插件使用的网段 + +实现k8s集群内部的Pod跨主机访问,这个时候需要用CNI插件,这个时候需要给一个网段,子网掩码是16 \ No newline at end of file diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914102731846.png" "b/k8s\346\234\215\345\212\241/images/image-20240914102731846.png" new file mode 100644 index 0000000000000000000000000000000000000000..9248a48a5ba5934c985d138667d76529de719bc3 Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914102731846.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914103153091.png" "b/k8s\346\234\215\345\212\241/images/image-20240914103153091.png" new file mode 100644 index 0000000000000000000000000000000000000000..5805cd078bc604d03207bbcbc6e711e4029f3b68 Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914103153091.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914103203275.png" "b/k8s\346\234\215\345\212\241/images/image-20240914103203275.png" new file mode 100644 index 0000000000000000000000000000000000000000..247b4e3817abeee7f47e14d609d309ce724b29c7 Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914103203275.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914103713522.png" "b/k8s\346\234\215\345\212\241/images/image-20240914103713522.png" new file mode 100644 index 0000000000000000000000000000000000000000..2655a8fc6f305eaf15a56cf28579a3b1de3a6b5c Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914103713522.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914105547101.png" "b/k8s\346\234\215\345\212\241/images/image-20240914105547101.png" new file mode 100644 index 0000000000000000000000000000000000000000..fd366a43529dfebe9825b7c90a264cdc54802069 Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914105547101.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914105559496.png" "b/k8s\346\234\215\345\212\241/images/image-20240914105559496.png" new file mode 100644 index 0000000000000000000000000000000000000000..a3e2f0c76df3acdaad497bb717eca10918e7caa8 Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914105559496.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914112311899.png" "b/k8s\346\234\215\345\212\241/images/image-20240914112311899.png" new file mode 100644 index 0000000000000000000000000000000000000000..92038c5be7a069485ef9f8323059bbbcd93a2146 Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914112311899.png" differ diff --git "a/k8s\346\234\215\345\212\241/images/image-20240914113752551.png" "b/k8s\346\234\215\345\212\241/images/image-20240914113752551.png" new file mode 100644 index 0000000000000000000000000000000000000000..ecc72e07b86b109f4c39f5ff436f2b1b586ae68b Binary files /dev/null and "b/k8s\346\234\215\345\212\241/images/image-20240914113752551.png" differ