Kubernetes 集群实战(微课版)课件 项目2 部署Kubernetes集群_第1页
Kubernetes 集群实战(微课版)课件 项目2 部署Kubernetes集群_第2页
Kubernetes 集群实战(微课版)课件 项目2 部署Kubernetes集群_第3页
Kubernetes 集群实战(微课版)课件 项目2 部署Kubernetes集群_第4页
Kubernetes 集群实战(微课版)课件 项目2 部署Kubernetes集群_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kubernetes集群实战(微课版)工业和信息化精品系列教材——云计算技术项目2

部署Kubernetes集群能力CAPACITY要求了解Kubernetes集群的组件。了解Kubernetes集群的部署方式和工具。学会使用部署工具创建Kubernetes集群。了解KubernetesDashboard。学会使用KubernetesDashboard部署容器化应用程序。任务2.2部署和使用KubernetesDashboard任务2.1创建Kubernetes集群任务2.1创建Kubernetes集群任务说明01OPTION02OPTION03OPTION了解Kubernetes集群的基本组成了解Kubernetes集群的主要组件了解Kubernetes集群的部署方式04OPTION了解Kubernetes集群的部署工具05OPTION学会Kubernetes集群的规划和部署06OPTION熟悉使用kubeadm部署Kubernetes集群的全过程任务2.1创建Kubernetes集群相关知识2.1.1Kubernetes集群的组件任务2.1创建Kubernetes集群相关知识2.1.2控制平面组件kube-apiserver——API服务器(APIServer)负责公开KubernetesAPI,处理接受请求的工作。etcd——所有集群数据的后台数据库,持久化存储集群中所有的资源对象以及配置数据。kube-scheduler——Kubernetes调度器(Scheduler)负责Pod在集群节点中的调度分配。kube-controller-manager——Kubernetes控制器管理器(ControllerManager)负责运行控制器进程。cloud-controller-manager——云控制器管理器(CloudControllerManager)利用云基础设施技术,在公有云、私有云或者混合云环境中运行Kubernetes。任务2.1创建Kubernetes集群相关知识2.1.3工作节点组件kubelet——在集群中每个节点上运行,是负责启动容器的重要的守护进程,用于保证容器在Pod中健康运行。kube-proxy——集群中每个节点上所运行的网络代理,是实现Kubernetes服务(Service)的通信与负载均衡机制的重要组件。容器运行时(ContainerRuntime)——在Kubernetes集群的每个节点上运行,负责容器的整个生命周期。任务2.1创建Kubernetes集群相关知识2.1.4功能插件集群DNS——CoreDNS容器网络接口(ContainerNetworkInterface,CNI)Web用户界面Dashboard容器资源监控集群级日志任务2.1创建Kubernetes集群相关知识2.1.1Kubernetes集群的组件借鉴集装箱装运货物的思想,让开发人员将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何运行Docker容器引擎的环境中,以容器形式来运行该应用程序。Docker是一个用于开发、发布和运行应用程序的开放平台。Docker重新定义了应用程序在不同环境中的移植和运行方式。任务2.1创建Kubernetes集群相关知识2.1.5Kubernetes部署方式二进制方式部署工具minikube——搭建单节点的Kubernetes集群。kubeadm——快速部署一个Kubernetes集群,适用于生产环境快速部署。kOps——官方推出的Kubernetes运维工具,适用于生产环境Kubernetes的安装、升级和管理。Kubespray——部署生产环境Kubernetes集群的工具。任务2.1创建Kubernetes集群相关知识2.1.6kubeadm工具命令功能kubeadminit初始化(创建)控制平面节点kubeadmjoin创建工作节点并将其加入到集群中kubeadmupgrade将Kubernetes集群升级到新版本kubeadmconfig查看和处理Kubernetes配置信息,例如kubeadmconfigprintinit-defaults命令显示init命令配置,kubeadmconfigprintjoin-defaults显示join命令配置,kubeadmconfigimagespull命令根据配置文件拉取镜像,kubeadmconfigimageslist命令显示需要拉取的镜像kubeadmtoken管理kubeadmjoin命令所使用的令牌kubeadmreset还原通过kubeadminit或kubeadmjoin命令对节点进行的任何变更kubeadmcerts管理Kubernetes证书kubeadmkubeconfig管理kubeconfig文件kubeadmversion显示kubeadm的版本信息任务2.1创建Kubernetes集群相关知识2.1.7高可用Kubernetes集群堆叠etcd拓扑任务2.1创建Kubernetes集群相关知识2.1.7高可用Kubernetes集群堆叠etcd拓扑任务2.1创建Kubernetes集群任务实现任务2.1.1规划Kubernetes集群节点类型主机名IP地址硬件配置控制平面节点master010CPU:4核;内存:8GB;硬盘:60GB工作节点node011CPU:2核;内存:4GB;硬盘:60GB工作节点node022CPU:2核;内存:4GB;硬盘:60GB任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境准备节点主机#hostnamectlset-hostnamemaster01#修改主机名#bash#重新执行Shell使配置生效#nmcliconnectionshow#获取当前的网络连接信息NAMEUUIDTYPEDEVICEvirbr03d081de7-b0f1-4105-ae59-645bb6163a1cbridgevirbr0ens16083daa21e-03bb-4cea-b286-d6a0fb6df711ethernet--#需配置的网络连接#nmcliconnectionmodifyens160ipv4.addr0/24ipv4.gatewayconnection.autoconnectyesipv4.dns"14"#修改网络连接配置#nmcliconnectionupens160#激活网络连接使配置生效连接已成功激活(D-Bus活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境配置主机名解析(/etc/hosts)0master011node012node02禁用防火墙#systemctlstopfirewalld&&systemctldisablefirewalld禁用SELinux#setenforce0#临时禁用SELinux#sed-i's/^SELINUX=enforcing$/SELINUX=disabled/'/etc/selinux/config任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境关闭交换分区#swapoff–a#临时关闭#sed-ri‘s/.*swap.*/#&/’/etc/fstab#重启后永久关闭设置系统时间同步修改/etc/chrony.conf配置文件serveriburstserveriburstserveriburstserveriburst重启chrony#systemctlrestartchronyd.service任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境安装IPVS相关工具安装ipset和ipvsadm工具#yuminstall-yipsetipvsadm编写/etc/sysconfig/modules/ipvs.modules脚本文件#!/bin/bashmodprobe--ip_vsmodprobe--ip_vs_rrmodprobe--ip_vs_wrrmodprobe--ip_vs_shmodprobe--nf_conntrack#如果内核版本低于4.18,则改用nf_conntrack_ipv4模块验证加载IPVS所需的模块#bash/etc/sysconfig/modules/ipvs.modules#lsmod|grep-e-ip_vs-enf_conntrack#查看相关的模块任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境安装containerd(1)调整内核参数。#modprobeoverlay#modprobebr_netfilter编辑/etc/modules-load.d/containerd.conf文件net.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1net.ipv4.ip_forward=1使以上内核参数调整生效#sysctl-p/etc/sysctl.d/99-kubernetes-cri.conf任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境安装containerd(2)下载containerd软件包。#wget/containerd/containerd/releases/download/v1.6.8/cri-containerd-1.6.8-linux-amd64.tar.gz(3)将该软件包解压缩到系统根目录中。#tar-zxvfcri-containerd-1.6.8-linux-amd64.tar.gz-C/(4)修改/etc/containerd/config.toml配置文件。SystemdCgroup=truesandbox_image="/google_containers/pause:3.8"

[plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint=["","","","http://h$[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]endpoint=["/google_containers"]任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境安装containerd(5)启动containerd并设置为开机启动。#systemctldaemon-reload&&systemctlenablecontainerd&&systemctlstartcontainerd(6)查看containerd的版本信息进行验证。#crictlversionVersion:0.1.0RuntimeName:containerdRuntimeVersion:v1.6.8RuntimeApiVersion:v1任务2.1创建Kubernetes集群任务实现任务2.1.2准备Kubernetes集群安装环境添加阿里云的Kubernetes软件源创建/etc/yum.repos.d/kubernetes.repo文件[kubernetes]name=Kubernetesbaseurl=/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=0gpgkey=/kubernetes/yum/doc/yum-key.gpg/kubernetes/yum/doc/rpm-package-key.gpg任务2.1创建Kubernetes集群任务实现任务2.1.3部署Kubernetes集群节点配置节点主机的SSH互信执行ssh-keygen命令生成SSH公钥认证所需的公钥和私钥文件。#ssh-keygen将所生成的公钥发送到要免密登录的主机中。ssh-copy-id-i~/.ssh/id_rsa.pubroot@master01测试其中一台主机的免密SSH登录。[root@master01~]#sshnode01Activatethewebconsolewith:systemctlenable--nowcockpit.socketLastlogin:MonNov2810:12:132022[root@node01~]#exit注销Connectiontonode01closed.任务2.1创建Kubernetes集群任务实现任务2.1.3部署Kubernetes集群节点初始化控制平面节点[root@master01~]#kubeadminit--apiserver-advertise-address=0--image-repository/google_containers--kubernetes-versionv1.25.4--service-cidr=/12--pod-network-cidr=/16--ignore-preflight-errors=all[init]UsingKubernetesversion:v1.25.4......Thenyoucanjoinanynumberofworkernodesbyrunningthefollowingoneachasroot:#提示加入工作节点的命令(包括令牌值)kubeadmjoin0:6443--token51siix.szxjd53d406j615y\ --discovery-token-ca-cert-hashsha256:fb304dbb2075a3ae22b6e9c0a4b7008c86607099e4b0a207e18c7e98f237bdd4任务2.1创建Kubernetes集群任务实现任务2.1.3部署Kubernetes集群节点为kubectl命令提供配置文件#mkdir-p$HOME/.kube#cp-i/etc/kubernetes/admin.conf$HOME/.kube/config#chown$(id-u):$(id-g)$HOME/.kube/config任务2.1创建Kubernetes集群任务实现任务2.1.3部署Kubernetes集群节点将工作节点加入集群[root@master01~]#sshnode01#免密登录到node01主机Activatethewebconsolewith:systemctlenable--nowcockpit.socketLastlogin:MonNov2821:40:022022[root@node01~]#kubeadmjoin0:6443--token51siix.szxjd53d406j615y--discovery-token-ca-cert-hashsha256:fb304dbb2075a3ae22b6e9c0a4b7008c86607099e4b0a207e18c7e98f237bdd4[preflight]Runningpre-flightchecks......Thisnodehasjoinedthecluster:#提示此节点已成功加入到集群......[root@node01~]#exit#退出node01主机登录任务2.1创建Kubernetes集群任务实现任务2.1.4安装Pod网络插件(1)从官网下载Calico插件安装用的配置文件calico.yaml。(2)修改calico.yaml文件。

-name:CALICO_IPV4POOL_CIDRvalue:"/16"(3)应用calico.yaml配置文件,在集群中部署Calico插件(创建多种Kubernetes资源)。#kubectlapply-fcalico.yaml(4)查看名称空间kube-system下的所有Pod对象。#kubectlgetpods-nkube-systemNAMEREADYSTATUSRESTARTSAGEcalico-kube-controllers-798cc86c47-jrlhm1/1Running011m......任务2.1创建Kubernetes集群任务实现任务2.1.4安装Pod网络插件(5)进一步查看Calico插件在各节点上的部署情况。#kubectlgetpo-A-owide|grepcalicokube-systemcalico-kube-controllers-798cc86c47-jrlhm1/1Running011mnode02<none><none>kube-systemcalico-node-4bj7s1/1Running011m2node02<none><none>kube-systemcalico-node-bqnzx1/1Running011m0master01<none><none>kube-systemcalico-node-s7fsd1/1Running011m1node01<none><none>任务2.1创建Kubernetes集群任务实现任务2.1.5测试Kubernetes集群(1)创建一个简单的Deployment资源以运行Nginx。#kubectlcreatedeploymentnginx--image=nginx:1.8.1deployment.apps/nginxcreated(2)将该Deployment资源发布为Service资源供外部访问。#kubectlexposedeploymentnginx--port=80--type=NodePortservice/nginxexposed(3)查看所创建的Pod和Service资源是否正常运行。#kubectlgetpod,svcNAMEREADYSTATUSRESTARTSAGEpod/nginx-cf797f6c5-s5lkq1/1Running02m26sNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEservice/kubernetesClusterIP<none>443/TCP12hservice/nginxNodePort36<none>80:30820/TCP56s(4)根据所暴露的节点端口访问所发布的Nginx服务器。[root@master01~]#curlhttp://node02:30820......<p><em>Thankyouforusingnginx.</em></p>任务2.1创建Kubernetes集群任务实现任务2.1.6使用containerd命令行工具crictl查看节点上当前的镜像列表。#crictlimagesIMAGETAGIMAGEIDSIZEdocker.io/calico/cniv3.24.5628dd7088041087.5MBdocker.io/calico/nodev3.24.554637cb36d4a181.6MB......查看节点上当前的容器列表。#crictlpsCONTAINERIMAGECREATEDSTATENAMEATTEMPTPODIDPOD75e3ecda6ac1a54637cb36d4a126minutesagoRunningcalico-node0f6e1607c1c245calico-node-bqnzx......任务2.2部署和使用KubernetesDashboard任务2.1创建Kubernetes集群任务2.2部署和使用KubernetesDashboard任务说明01OPTION02OPTION03OPTION了解Kubernetes集群资源管理方式了解KubernetesDashboard的功能掌握KubernetesDashboard的安装方法04OPTION掌握KubernetesDashboard的使用方法任务2.2部署和使用KubernetesDashboard相关知识2.2.1Kubernetes集群资源管理方式kubectl命令行——提供除系统部署之外的几乎全部的集群及其资源管理操作。配置文件——使用YAML格式文件定义资源,其他管理方式最终都会转换为YAML格式的清单文件。适合专业的管理员使用。Web用户界面——KubernetesDashboard提供直观的图形化管理界面,可用来查看、监控和管理Kubernetes资源。适合一些演示场合。API接口——Kubernetes提供各种编程语言的SDK接口,便于用户开发的应用程序接入Kubernetes集群。任务2.2部署和使用KubernetesDashboard相关知识2.2.2KubernetesDashboard的功能查看Kubernetes集群中的各种资源。创建和管理Kubernetes资源。监控Kubernetes资源。任务2.2部署和使用KubernetesDashboard任务实现任务2.2.1安装KubernetesDashboard安装Dashboard(1)从GitHub网站上下载KubernetesDashboard的安装配置文件。(2)调整默认配置。修改下载的recommended.yaml文件。spec:type:NodePort#指定Service类型

ports:-port:443targetPort:8443nodePort:30005#指定节点端口(3)创建相应的Kubernetes资源来运行Dashboard。#kubectlapply-frecommended.yaml(4)验证Dashboard本身是以Pod形式部署的。#kubectlgetpod-nkubernetes-dashboardNAMEREADYSTATUSRESTARTSAGEdashboard-metrics-scraper-64bcc67c9c-fkx571/1Running04m25skubernetes-dashboard-5c8bd6b59-p2nvp1/1Running04m25s(5)查看所创建的Service资源。#kubectlgetsvckubernetes-dashboard-nkuberne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论