宝应网站,做问卷调查的网站,格尔木城乡建设规划局网站,沈阳医大一医院男科咨询一、概述
Kubernetes#xff08;简称K8S#xff09;是一个开源的容器编排和管理平台#xff0c;是由Google发起并捐赠给Cloud Native Computing Foundation#xff08;CNCF#xff09;管理的项目。它的目标是简化容器化应用的部署、扩展、管理和自动化操作。
以下是Kube…一、概述
Kubernetes简称K8S是一个开源的容器编排和管理平台是由Google发起并捐赠给Cloud Native Computing FoundationCNCF管理的项目。它的目标是简化容器化应用的部署、扩展、管理和自动化操作。
以下是Kubernetes的一些关键特性
1、容器编排Kubernetes可以管理和调度大规模的容器化应用程序。它能够确保应用程序在集群中的各个节点上正确启动和运行并根据资源需求和可用性动态调整容器的数量和位置。
2、服务发现和负载均衡Kubernetes提供了内建的服务发现机制使得容器之间可以通过服务名来相互通信而不需要硬编码IP地址或端口。同时Kubernetes还支持负载均衡自动将请求分发给可用的容器实例。
3、自动伸缩Kubernetes能够根据应用程序的负载自动进行水平扩展即增加或减少容器的数量以满足应用程序的需求。这种自动伸缩可以基于CPU利用率、内存使用量等指标进行配置。
4、自愈性和故障恢复Kubernetes具有自动故障检测和修复的能力。当容器或节点发生故障时Kubernetes会自动重新启动容器、迁移容器到其他健康节点或者按照指定的策略自动替换故障的节点。
5、云原生底层设施支持Kubernetes与云原生应用开发和部署的理念紧密结合。它提供了对云平台的适配和整合能够无缝地部署和管理应用程序到各种云服务提供商的基础设施上。
6、插件和扩展性Kubernetes拥有丰富的插件和扩展机制可以通过自定义资源或控制器来扩展和定制其功能。这使得开发者可以根据自己的需求将Kubernetes与其他工具和平台进行整合。
Kubernetes广泛应用于企业和云服务提供商中为容器化应用提供了灵活、可靠和可扩展的运行环境。它极大地简化了应用程序的部署和管理提高了开发和运维的效率成为云原生应用开发的重要基石之一。
二、工作原理
Kubernetes的工作原理可以分为以下几个关键组件和概念
1. Master节点Master节点是Kubernetes集群的控制中心负责整个集群的管理和控制。它包含以下组件 - API Server提供集群的API接口接收和处理用户和组件的请求。 - Scheduler根据用户的需求和资源的可用性决定将容器调度到集群中的哪个节点上。 - Controller Manager负责监控和管理集群状态包括自动伸缩、故障恢复等功能。 - etcd保存集群的配置信息和状态数据保证高可用和一致性。
2. Worker节点Worker节点是集群中实际运行容器的节点也称为Minion节点。每个Worker节点上都有以下组件 - Kubelet负责与Master节点通信管理本节点上的容器和Pod。 - Container Runtime用于运行容器的底层软件如Docker。 - kube-proxy负责网络代理和负载均衡为容器提供网络服务。
3. PodPod是Kubernetes的最小部署单元可以包含一个或多个相关的容器。Pod是运行在Worker节点上的实际应用实例它共享相同的网络和存储资源。每个Pod都有一个唯一的IP地址。
4. ReplicaSet和DeploymentReplicaSet是Kubernetes中的一个控制器用于创建和管理拥有相同配置和副本数量的Pod组。它确保指定数量的Pod运行并在有需要时进行水平扩展或收缩。Deployment是对ReplicaSet的进一步封装提供了应用程序的版本控制和滚动升级的能力。
5. ServiceService是通过标签选择器与一组Pod进行关联并提供稳定的服务访问入口。Service可以实现负载均衡、内部服务发现和跨集群通信等功能。
Kubernetes的工作原理可以简要概括为用户通过API Server与Master节点交互创建、修改或删除资源对象如Pod、ReplicaSet、Deployment等。Master节点根据请求的内容进行相应操作并将相应配置信息存储在etcd中。Kubelet监听Master节点的指令在Worker节点上创建、管理和监控Pod的生命周期。kube-proxy负责处理网络请求将请求转发到合适的Pod。
通过这种架构Kubernetes可以动态地管理和调度容器化应用程序实现高可用性、弹性伸缩和自动化操作。它提供了一种高级抽象的方式来描述应用程序和资源对象并通过自动化和智能调度来确保应用程序的高效运行。 三、安装部署docker
注意所有主机配置推荐CPU2C Memory2G 1、主机初始化配置所有主机都要配置
所有主机配置禁用防火墙和selinux
setenforce 0
iptables -F
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
sed -i /^SELINUX/s/enforcing/disabled/ /etc/selinux/config
配置主机名并绑定hosts不同主机名称不同
cat EOF /etc/hosts
192.168.77.14 k8s-master
192.168.77.15 k8s-node01
192.168.77.16 k8s-node02
EOF 关闭交换分区
swapoff -a
sed -i /swap/s/^/#/ /etc/fstab
将IPv6的请求转发到IPv4
cat EOF /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
EOF
查看
modprobe br_netfilter
sysctl -p 2、部署docker-ce环境
三台主机上分别部署 Docker 环境因为 Kubernetes 对容器的编排需要 Docker 的支持安装的版本是19.03.0
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum clean all yum makecache fast yum -y install docker-ce-cli-19.03.3 containerd.iosystemctl start docker systemctl enable docker配置docker的阿里源
cat END /etc/docker/daemon.json
{registry-mirrors:[ https://nyakyfun.mirror.aliyuncs.com ]
}
ENDsystemctl daemon-reloadsystemctl restart docker 四、安装部署Kubernetes集群
1、组件介绍
三个节点都需要安装下面三个组件
①、kubeadm安装工具使所有的组件都会以容器的方式运行
②、kubectl客户端连接K8S API工具
③、kubelet运行在node节点用来启动容器的工具
2、配置阿里云yum源所有主机
cat EOF /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled1
gpgcheck0
repo_gpgcheck0
gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3、安装kubelet kubeadm kubectl所有主机
yum -y install kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet
kubelet 刚安装完成后通过 systemctl start kubelet 方式是无法启动的需要加入节点或初始化为 master 后才可启动成功
如果在命令执行过程中出现索引 gpg 检查失败的情况, 请使用 yum install -y --nogpgcheck kubelet kubeadm kubectl 来安装
4、配置init-config.yaml只有主节点配置
Kubeadm 提供了很多配置项Kubeadm 配置在 Kubernetes 集群中是存储在ConfigMap 中的也可将这些配置写入配置文件方便管理复杂的配置项。Kubeadm 配内容是通过 kubeadm config 命令写入配置文件的。
kubeadm config print init-defaults init-config.yaml
vim /root/init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.77.14 //master节点IP地址bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: k8s-master //如果使用域名保证可以解析或直接使用 IP 地址taints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd //etcd 容器挂载到本地的目录
imageRepository: registry.aliyuncs.com/google_containers //修改为国内地址
kind: ClusterConfiguration
kubernetesVersion: v1.19.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16 //新增加 Pod 网段
scheduler: {} 5、安装master节点
kubeadm config images list --config init-config.yaml 拉取镜像 kubeadm config images pull --configinit-config.yaml 下载镜像echo 1 /proc/sys/net/ipv4/ip_forward
kubeadm init --configinit-config.yaml //初始化安装K8S下面红框中标注的是添加集群主节点的信息给从指定主需要用到 kubectl 默认会在执行的用户家目录下面的.kube 目录下寻找config 文件这里是将在初始化时[kubeconfig]步骤生成的admin.conf 拷贝到.kube/config
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config 6、安装node节点
两个从节点指定主的信息
kubeadm join 192.168.77.14:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:910a7f7c25bcb32f88f28a66ccd142afa38188ee60d4807e9b8aac27b68a8a4d到主节点上查看 在初始化 k8s-master 时并没有网络相关配置所以无法跟 node 节点通信因此状态都是“NotReady”
今天只学了安装配置还没有学习网络设置下一篇文章将学习如何进行网络设置
以上就是Kubernetes的安装与集群部署如有错误欢迎各位大佬批评指正我们共同进步