【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

Kubernetes 安装部署指南:从入门到精通 (kubernetes)

用户投稿2024-04-16热门资讯28

Kubernetes 安装部署指南:从入门到精通

概述

Kubernetes 是一个开源容器编排系统,用于自动化容器化应用程序的部署、管理和扩展。本指南将带您逐步了解 Kubernetes 的安装、部署和高级功能,让您从入门到精通 Kubernetes。

入门

先决条件

  • 带有至少 2 个 CPU 内核和 2 GB RAM 的 Linux 服务器
  • Docker 已安装并正在运行

安装

  1. 在每台节点上安装 Kubeadm:
  2. sudo apt-get install kubeadm
  3. 初始化 Kubernetes 集群:
  4. kubeadm init --pod-network-cidr=10.244.0.0/16

配置网络

  1. 创建 Pod 网络插件:
  2. kubectl apply -f
  3. 配置 DNS 和服务发现:
  4. kubectl apply -f

部署一个应用程序

  1. 创建一个部署:
  2. kubectl create deployment nginx --image=nginx
  3. 创建服务:
  4. kubectl expose deployment nginx --type=NodePort --port=80

部署高级功能

自动伸缩

  1. 创建一个水平自动伸缩器:
  2. kubectl autoscale deployment nginx --min=1 --max=5 --cpu-percent=80

存储卷

  1. 创建一个 PersistentVolume:
  2. kubectl create pv pvc-data --type LocalVolume --local-path=/data
  3. 创建一个 PersistentVolumeClaim:
  4. kubectl create pvc pvc-data --storage-class=local-storage
  5. 将存储卷挂载到 Pod:
  6. apiVersion: v1kind: Podmetadata:name: nginx-with-pvcspec:containers:- name: nginximage: nginxvolumeMounts:- name: pvc-datamountPath: /datavolumes:- name: pvc-datapersistentVolumeClaim:claimName: pvc-data

Ingress

  1. 安装 Nginx Ingress 控制器:
  2. kubectl apply -f
  3. 创建 Ingress 资源:
  4. apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: my-ingress spec:rules:- host: myapp.example.comhttp:paths:- path: /backend:service:name: my-serviceport:number: 80

故障排查

日志记录

  1. 查看 Pod 日志:
  2. kubectl logs my-pod
  3. 查看节点日志:
  4. kubectl logs my-node --namespace=kube-system

事件

  1. 查看 Kubernetes 事件:
  2. kubectl get events
  3. 查看 Pod 事件:
  4. kubectl describe pod my-pod

资源监控

  1. 使用 Kubectl top 命令:
  2. kubectl top nodeskubectl top pods
  3. 使用 Heapster 或 Prometheus 等监控工具:
  4. kubectl apply -f

结论

本指南为您提供了 Kubernetes 安装、部署和高级功能的全面概述。通过遵循这些步骤,您可以搭建一个基本功能的 Kubernetes 集群,并逐渐扩展其功能,以满足您的特定需求。随着您对 Kubernetes 的深入了解,您将能够有效地管理和扩展您的容器化应用程序。


超全K8s集群构建指南,建议收藏

1. 什么是kubernetes  Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

2. kubernetes核心组件说明 Kubernetes 集群中主要存在两种类型的节点,分别是 master 节点 ,以及 minion 节点 。

Minion 节点是实际运行 Docker 容器的节点,负责和节点上运行的 Docker 进行交互,并且提供了代理功能。

Master 节点负责对外提供一系列管理集群的 API 接口,并且通过和 Minion 节点交互来实现对集群的操作管理。

apiserver :用户和 kubernetes 集群交互的入口,封装了核心对象的增删改查操作,提供了 RESTFul 风格的 API 接口,通过 etcd 来实现持久化并维护对象的一致性。

scheduler :负责集群资源的调度和管理,例如当有 pod 异常退出需要重新分配机器时,scheduler 通过一定的调度算法从而找到最合适的节点。

controller-manager :主要是用于保证 replicationController 定义的复制数量和实际运行的 pod 数量一致,另外还保证了从 service 到 pod 的映射关系总是最新的。

kubelet :运行在 minion 节点,负责和节点上的 Docker 交互,例如启停容器,监控运行状态等。

proxy :运行在 minion 节点,负责为 pod 提供代理功能,会定期从 etcd 获取 service 信息,并根据 service 信息通过修改 iptables 来实现流量转发(最初的版本是直接通过程序提供转发功能,效率较低。),将流量转发到要访问的 pod 所在的节点上去。

etcd :key-value键值存储数据库,用来存储kubernetes的信息的。

flannel :Flannel 是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,需要另外下载部署。

我们知道当我们启动 Docker 后会有一个用于和容器进行交互的 IP 地址,如果不去管理的话可能这个 IP 地址在各个机器上是一样的,并且仅限于在本机上进行通信,无法访问到其他机器上的 Docker 容器。

Flannel 的目的就是为集群中的所有节点重新规划 IP 地址的使用规则,从而使得不同节点上的容器能够获得同属一个内网且不重复的 IP 地址,并让属于不同节点上的容器能够直接通过内网 IP 通信。

3. Kubernetes的核心概念

运行于Node节点上,若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通。

Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个Pod可以包含一个容器或者多个相关容器。

Replication Controller Replication Controller用来管理Pod的副本,保证集群中存在指定数量的Pod副本。

集群中副本的数量大于指定数量,则会停止指定数量之外的多余容器数量,反之,则会启动少于指定数量个数的容器,保证数量不变。

Replication Controller是实现弹性伸缩、动态扩容和滚动升级的核心。

Service定义了Pod的逻辑集合和访问该集合的策略,是真实服务的抽象。

Service提供了一个统一的服务访问入口以及服务代理和发现机制,用户不需要了解后台Pod是如何运行。

Kubernetes中的任意API对象都是通过Label进行标识,Label的实质是一系列的K/V键值对。Label是Replication Controller和Service运行的基础,二者通过Label来进行关联Node上运行的Pod。

Node是Kubernetes集群架构中运行Pod的服务节点(或agent)。

Node是Kubernetes集群操作的单元,用来承载被分配Pod的运行,是Pod运行的宿主机。

4. 前置条件设置 三台Centos7系统的虚拟机(1个master+2个node),三台机器上的防火墙,SELINUX全部关掉。我的实验坏境可以上网,默认的YUM源就可以用。

5. 部署规划 192.168.10.1 # master节点(etcd,kubernetes-master)192.168.10.2 # node1节点(etcd,kubernetes-node,docker,flannel)192.168.10.3 # node2节点(etcd,kubernetes-node,docker,flannel)

6. 开始安装

step1:在master上安装 yum install kubernetes-master etcd flannel -y

step2:在node上安装 yum install kubernetes-node etcd flannel -y

step3:etcd集群配置 在master节点上编辑etcd配置文件

在node1节点上编辑etcd配置文件

在node2节点上编辑etcd配置文件

到此etcd集群就部署完了,然后每个节点上启动systemctl start etcd

step4:验证

step6:启动Master上的三个服务

step7:kubernetes node安装

node2 节点重复上述操作step8:分别启动kubernetes node服务

7. 网络配置 因为kubernetes集群中网络部分是插件形式安装的,我们这里选用flannel上述安装步骤已经install 了

为flannel创建分配的网络

8. 执行kubectl 命令检查 在master上执行下面,检查kubernetes的状态

9. 常用排错命令如下

一、Mac 下使用虚拟机安装 Kubernetes

电脑 8 核 16 G1. 安装 VMware2. 安装 Centos3. 配置阿里云 a. cp /etc/.d/ /etc/.d/ b. wget -O /etc/.d/. yum makecache d. yum update e. yum clean all4. 配置静态网络(可省略) a. cat /Library/Preferences/VMware Fusion/vmnet8/. 获取 IPADDRii. 获取 NETMASK b. /qLibrary/Preferences/VMware Fusion/vmnet8/. 获取GATEWAY c. vi /etc/sysconfig/network-scripts/ifcfg-ens33i. BOOTPROTO=static(ip地址设置为静态的)ii. IPADDR=上面mac中找到的ip范围中设置一个iii. NETMASK=255.255.255.0(也是从上面得到)iv. GATEWAY=设置上面mac中看到的gatway地址,即router路由地址(192.168.181.2)v. ONBOOT=yesvi. DNS1=x.x.x.x(在mac,网络,高级里面的选项卡能够找到 d. systemctl restart 5. 安装 docker 15 a. mkdir /etc/.d/bak b. cp /etc/.d/* /etc/.d/bak c. wget -O /etc/.d/. yum clean all && yum makecache e. yum install -y 7 f. systemctl enable docker && systemctl start docker g. docker version 6. 安装 kubernetes a. 配置国内Kubernetes源 cat <<EOF > /etc/.d/ [kubernetes] name=Kubernetes baseurl=enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=EOF b. yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.17. 部署 Kubernetes a. systemctl stop firewalld & systemctl disable firewalld 关闭防火墙 b. swapoff -a c. setenforce 0 关闭 Selinux d. 修改/etc/sysconfig/selinux文件 SELINUX=disabled e. 创建/etc/sysctl.d/ -nf-call-iptables = 1 -nf-call-ip6tables = 1 f. sysctl --system g. 进入 /home/你的文件夹 h. kubeadm config print init-defaults > i. sed -i s/advertiseAddress: .*/advertiseAddress: 你的 IP/g j. sed -i s/podSubnet: .*/podSubnet: \192.168.0.0\/16\/g k. sed -i s/imageRepository: .*/imageRepository: \/google_containers/g l. sed -i s/kubernetesVersion: .*/kubernetesVersion: v1.17.3/g m. kubeadm config images pull --config (拉去镜像) n. kubeadm init --config 初始化 o. 命令照搬 mkdir -p $HOME/ sudo cp -i /etc/kubernetes/ $HOME//config sudo chown $(id -u):$(id -g) $HOME//config8. 安装网络插件 a. wgetb. kubectl apply -f c. 查看安装情况:kubectl get pods --all-namespaces9. kubectl taint nodes --all /master-10. 拍摄快照

基于Linux自己初步搭建Kubernetes(k8s)集群基础,详细教程

k8s官方网站:,可自行查看相关文档说明

k8s-master:Ubuntu--192.168.152.100

k8s-node01:Ubuntu--192.168.152.101

k8s-node02:Ubuntu--192.168.152.102

全部已安装docker,未安装可根据官方文档安装:1,禁止swap分区

K8s的要求,确保禁止掉swap分区,不禁止,初始化会报错。

在每个宿主机上执行:

2,确保时区和时间正确

时区设置

3,关闭防火墙和selinux

ubuntu 查看防火墙命令,ufw status可查看状态,ubuntu20.04默认全部关闭,无需设置。

4,主机名和hosts设置(可选)

非必须,但是为了直观方便管理,建议设置。

在宿主机分别设置主机名:k8s-master,k8s-node01,k8s-node02

hosts设置

1,更改docker默认驱动为systemd

为防止初始化出现一系列的错误,请检查docker和kubectl驱动是否一致,否则kubectl没法启动造成报错。版本不一样,docker有些为cgroupfs,而kubectl默认驱动为systemd,所以需要更改docker驱动。

可查看自己docker驱动命令:

更改docker驱动,编辑 /etc/docker/ (没有就新建一个),添加如下启动项参数即可:

重启docker

需要在每台机器上安装以下的软件包:

2,更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包

安装软件包以允许apt通过HTTPS使用存储库,已安装软件的可以忽略

3,下载公开签名秘钥、并添加k8s库

国外 :下载 Google Cloud 公开签名秘钥:

国内:可以用阿里源即可:

请注意,在命令中,使用的是Ubuntu 16.04 Xenial 版本, 是可用的最新 Kubernetes 存储库。所以而非20.04 的focal。

4,更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本

锁定版本,防止出现不兼容情况,例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 服务器,反之则不可以。

只需要在master上操作即可。

1,初始化错误解决(没有报错的可以跳过这条)

错误提示1:

原因:kubectl没法启动,journalctl -xe查看启动错误信息。

解决方案:k8s建议systemd驱动,所以更改docker驱动即可,编辑 /etc/docker/ (没有就新建一个),添加如下启动项参数即可:

重启docker和kubectel

错误提示2:

原因:初始化生产的文件,重新初始化,需要删除即可

错误提示3:

解决方法:重置配置

2,初始化完成

无报错,最后出现以下,表示初始化完成,根据提示还需要操作。

根据用户是root或者普通用户操作,由于大多环境不会是root用户,我也是普通用户,所以选择普通用户操作命令:

如果是root用户,执行以下命令:

初始化完成,用最后的提示命令 kubeadm join.... 在node机器上加入集群即可。

3,主节点pod网络设置

主节点支持网络插件:这里安装Calico网络插件:Calico官网提供三种安装方式,1)低于50个节点,2)高于50个节点,3)etcd datastore(官方不建议此方法)。

这里选择第一种:

安装完成后, kubectl get node可查看节点状态,由NotReady变成Ready则正常,需要等几分钟完成。

1,node加入master节点

在所有node节点机器操作,统一已安装完成 kubelet、kubeadm 和 kubectl,用master初始化完成后最后提示命令加入,切记要用root用户。

加入成功后,提示如下:

再次查看kubelet服务已正常启动。

2,需注意的坑

1:加入主节点,需要 root 用户执行词条命令,才可以加入master主节点。

node在没有加入主节点master之前,kubelet服务是没法启动的,是正常情况,会报错如下:

原因是缺失文件,主节点master初始化 `kubeadm init`生成。

node节点是不需要初始化的,所以只需要用root用户`kubeadm join`加入master即可生成。

2:如果加入提示某些文件已存在,如:

Kubernetes 安装部署指南:从入门到精通 (kubernetes) 第1张

原因是加入过主节点,即使没成功加入,文件也会创建,所以需要重置节点,重新加入即可,重置命令:

3,在master查看节点

加入完成后,在master节点 kubectl get node 可查看已加入的所有节点:

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

Kubernetes 安装部署指南:从入门到精通 (kubernetes) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!