容器技术与应用实验指导书 实验12 Kubernetes集群部署(单master节点)_第1页
容器技术与应用实验指导书 实验12 Kubernetes集群部署(单master节点)_第2页
容器技术与应用实验指导书 实验12 Kubernetes集群部署(单master节点)_第3页
容器技术与应用实验指导书 实验12 Kubernetes集群部署(单master节点)_第4页
容器技术与应用实验指导书 实验12 Kubernetes集群部署(单master节点)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

实验12Kubernetes集群部署(单k8s-master节点)【实验要求】Kubernetes集群部署。【实验环境】主机名IP地址虚拟机CPU/内存节点角色k8s-k8s-master0/242vcpus/8GB管理节点k8s-node010/242vcpus/8GB工作节点1k8s-node020/242vcpus/8GB工作节点2【实验步骤】步骤1:基础环境设置,所有节点均需操作。1.修改各节点主机名k8s-master节点[root@localhost~]#hostnamectlset-hostnamek8s-master[root@localhost~]#bashk8s-node01节点[root@localhost~]#hostnamectlset-hostnamek8s-node01[root@localhost~]#bashk8s-node02节点[root@localhost~]#hostnamectlset-hostnamek8s-node02[root@localhost~]#bash2.禁用各节点RedHatSubscriptionManager订阅管理器。#vi/etc/yum/pluginconf.d/subscription-manager.conf//修改enabled参数值为0enabled=0文件编辑完成,保存退出,返回命令行。#vi/etc/yum/pluginconf.d/product-id.conf//修改enabled参数值为0enabled=0文件编辑完成,保存退出,返回命令行。3.在各节点上编辑/etc/hosts文件,添加域名解析。[root@k8s-master~]#vi/etc/hosts添加以下内容。0k8s-master0k8s-node010k8s-node02将/etc/hosts复制到k8s-node01和k8s-node02节点。[root@k8s-master~]#scp/etc/hostsroot@0:/etc/hosts[root@k8s-master~]#scp/etc/hostsroot@0:/etc/hosts4.所有节点主机均关闭防火墙和Selinux。k8s-master节点[root@k8s-master~]#systemctldisablefirewalld[root@k8s-master~]#systemctlstopfirewalld[root@k8s-master~]#sed-i"s/^SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config[root@k8s-master~]#setenforce0k8s-node01节点[root@k8s-node01~]#systemctldisablefirewalld[root@k8s-node01~]#systemctlstopfirewalld[root@k8s-node01~]#sed-i"s/^SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config[root@k8s-node01~]#setenforce0k8s-node02节点[root@k8s-node02~]#systemctldisablefirewalld[root@k8s-node02~]#systemctlstopfirewalld[root@k8s-node02~]#sed-i"s/^SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config[root@k8s-node02~]#setenforce05.在各节点上配置yum源。本任务通过配置本地yum源,以提供相应软件包的安装,上传RedHat8的映像文件rhel-8.1-x86_64-dvd.iso到虚拟机的/opt目录中,上传完毕后,利用ls命令进行查看。#ls/optrhel-8.1-x86_64-dvd.iso移除节点的本地yum源。#mkdir/opt/repo //建立存放目录#mv/etc/yum.repos.d/*/opt/repo //将原yum文件移至/opt/repo目录下将镜像文件挂载到/mnt目录,同时设置开机自动挂载。#mount-oloop/opt/rhel-8.1-x86_64-dvd.iso/mntmount:/mnt:WARNING:devicewrite-protected,mountedread-only.#vi/etc/fstab//在文件末尾添加如下参数信息/opt/rhel-8.1-x86_64-dvd.iso/mnt/iso9660loop00文件编辑完成后,保存退出,返回命令行。在/etc/yum.repod.d目录下编写本地yum源文件,文件命令为redhat.repo。#vi/etc/yum.repos.d/redhat.repo//添加如下参数信息[AppStream]name=AppStreambaseurl=file:///mnt/AppStreamenabled=1gpgcheck=0[BaseOS]name=BaseOSbaseurl=file:///mnt/BaseOSenabled=1gpgcheck=0文件编辑完成后,保存退出,返回命令行,并清理及重建yum缓存。#yumcleanall#yummakecache6.关闭swap分区,3台主机均需设置。#swapoff-a //临时关闭#sed-ri's/.*swap.*/#&/'/etc/fstab //永久关闭7.配置免密登录。[root@k8s-master~]#ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.ssh/id_rsa): //直接按Enter键Createddirectory'/root/.ssh'.Enterpassphrase(emptyfornopassphrase): //直接按Enter键Entersamepassphraseagain: //直接按Enter键Youridentificationhasbeensavedin/root/.ssh/id_rsa.Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.…[root@k8s-master~]#ssh-copy-idk8s-master//将密码复制到k8s-master主机[root@k8s-master~]#ssh-copy-idk8s-node01 //将密钥复制到k8s-node01主机[root@k8s-master~]#ssh-copy-idk8s-node02 //将密钥复制到k8s-node02主机配置完成后,可进行验证,本任务仅以在k8s-master主机上进行验证为例。//通过SSH[root@k8s-master~]#sshk8s-node01Lastlogin:MonAug523:08:082024from[root@k8s-node01~]#[root@k8s-node01~]#exitlogoutConnectiontok8s-node01closed.[root@k8s-master~]#sshk8s-node02Lastlogin:MonAug523:08:082024from[root@k8s-node02~]#exitlogoutConnectiontok8s-node02closed.从显示结果上看,免密登录配置成功。8.在各节点上配置时钟同步,安装chrony时间同步服务软件包。#yum-yinstallchrony编辑chrony配置文件:#vi/etc/chrony.conf//添加如下参数信息pool1.iburst文件编辑完成后,保存退出,返回命令行,重启chronyd服务。#systemctlrestartchronyd#ln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime#echo'Asia/Shanghai'>/etc/timezone运行chronyc命令验证时间同步状态。#chronycsources此时应该会看到阿里云NTP服务器列在同步源之中。9.在各节点上进行安装前的系统优化。#vi/etc/sysctl.d/k8s.conf //添加如下参数信息net.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1vm.swappiness=0vm.overcommit_memory=1vm.panic_on_oom=0fs.inotify.max_user_instances=8192fs.inotify.max_user_watches=1048576fs.file-max=52706963fs.nr_open=52706963net.ipv6.conf.all.disable_ipv6=1filter.nf_conntrack_max=2310720文件修改完后,保存退出,返回命令行。参数说明:net.bridge.bridge-nf-call-ip6tables=1:当通过桥接网络接收到IPv6数据包时,将调用ip6tables的规则进行处理。net.bridge.bridge-nf-call-iptables=1:当通过桥接网络接收到IPv4数据包时,将调用iptables的规则进行处理。net.ipv4.ip_forward=1:允许IPv4的数据包转发,即使数据包的目标不是本机。#modprobebr_netfilter#lsmod|grepconntrack#modprobeip_conntrack#sysctl-p/etc/sysctl.d/k8s.conf10.在各节点上配置ipvs转发支持功能,3个节点均需配置。#yum-yinstallwgetjqpsmiscvimnet-toolsnfs-utilssocattelnetdevice-mapper-persistent-datalvm2gitnetwork-scriptstarcurl-y#yuminstall-yconntrackipvsadmipsetjqiptablescurlsysstatlibseccompwgetvimnet-toolsgit//开启ipvs转发#modprobebr_netfilter#cat>/etc/sysconfig/modules/ipvs.modules<<EOF#!/bin/bashmodprobe--ip_vsmodprobe--ip_vs_rrmodprobe--ip_vs_wrrmodprobe--ip_vs_shmodprobe--nf_conntrackEOF#chmod755/etc/sysconfig/modules/ipvs.modules#bash/etc/sysconfig/modules/ipvs.modules#lsmod|grep-eip_vs-enf_conntrackip_vs_sh163840ip_vs_wrr163840ip_vs_rr163840ip_vs1720326ip_vs_rr,ip_vs_sh,ip_vs_wrrnf_defrag_ipv6204801ip_vsnf_conntrack1556481ip_vslibcrc32c163843nf_conntrack,xfs,ip_vs步骤2:安装Kubernetes基础环境设置,3个节点均需配置。1.安装Docker,安装完成后配置镜像加速器,并启动Docker服务。#wget/docker-ce/linux/centos/docker-ce.repo-O/etc/yum.repos.d/docker-ce.repo#yum-yinstalldocker-ce-26.1.3//安装docker-ce#systemctlstartdocker#systemctlenabledocker配置镜像加速器,以提升镜像下载速度。#vi/etc/docker/daemon.json//添加如下参数信息{"exec-opts":["native.cgroupdriver=systemd"],"registry-mirrors":["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","","","","https://docker.m.daocloud.io","","","","","https://docker.rainbond.cc"]}文件修改完后,保存退出,返回命令行,并重启Docker服务。#systemctldaemon-reload#systemctlrestartdocker#docker--versionDockerversion26.1.3,buildb72abbb2.配置cri-docker环境,所有节点均需配置。#yuminstall-ylibcgroup#wget/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el8.x86_64.rpm#rpm-ivhcri-dockerd-0.3.4-3.el8.x86_64.rpm#vim/usr/lib/systemd/system/cri-docker.service//修改ExecStart参数值,可将原有内容注释掉,换成下面的内容ExecStart=/usr/bin/cri-dockerd--pod-infra-container-image=/google_containers/pause:3.9--container-runtime-endpointfd://文件配置完成后,保存退出,返回到命令行。#systemctlrestartcri-docker#systemctlenablecri-docker3.配置Kubernetes的yum源。#vi/etc/yum.repos.d/kubernetes.repo//添加如下参数信息[kubernetes]name=Kubernetesbaseurl=/kubernetes-new/core/stable/v1.28/rpm/enabled=1gpgcheck=1gpgkey=/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key文件配置完成后,保存退出,返回到命令行。运行以下命令查看所有的可用版本。#yumlistkubelet--showduplicates|sort-r4.安装kubectl-1.28.2kubelet-1.28.2kubeadm-1.28.2服务,3台主机均需配置。Kubectl:解释:kubectl是Kubernetes的命令行工具,用于与Kubemnetes集群进行交互。它允许管理集群中的资源,如Pod、Service、Deployment等。用法:kubectl的用法非常广泛,可以用于创建、删除、修改和査看各种Kubernetes资源,您可以使用kubectl命令来创建和管理Pod、Service、Deployment、ConfigMap、Secret等资源,还可以使用kubectl来查看集群状态、日志和事件等信息.Kubeadm:解释:kubeadm是一个用于初始化和管理Kubemnetes集群的命令行工具。它简化了集群的部署过程,可以快速搭建一个最小化的Kubernetes集群。用法:kubeadm提供了一组命令,用于初始化K8s-master节点、添加Worker节点、升级集群版本等操作。它会自动处理集群的网络配置、证书生成和分发、初始化K8s-master节点的各种组件等任务。Kubelet:解释:kubelet是Kubernetes集群中的一个主要组件,运行在每个节点上,负责管理节点上的容器和Pod.用法:kubelet的主要职责是监控Pod的状态和健康状况,确保Pod按照所需的规格运行,并与K8s-master节点通信以接收和执行分配给节点的任务。kubelet还负责拉取和启动容器镜像,并监控容器的资源使用情况。#yuminstall-ykubelet-1.28.2kubeadm-1.28.2kubectl-1.28.25.修改/etc/sysconfig/kubelet文件内容,以实现Docker使用的cgroupdriver与kubelet使用的cgroups的一致性,3台主机均需配置。#vi/etc/sysconfig/kubelet//修改如下参数信息KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"文件编辑完成后,保存退出,返回命令行,重启kubelet服务并设置开机自动启动。#systemctlstartkubelet#systemctlenablekubelet6.为提高部署效率,可提前下载并安装kubernet1.28.2所需的镜像,可利用以下命令查看所需镜像。在三台主机上,可利用以下命令获取所需镜像。#kubeadmconfigimagespull--image-repository/google_containers--cri-socket=unix:///var/run/cri-dockerd.sock在三台主机上,从命令返回结果来看,共需7个镜像。#kubeadmconfigimageslist--kubernetes-version=v1.28.2registry.k8s.io/kube-apiserver:v1.28.2registry.k8s.io/kube-controller-manager:v1.28.2registry.k8s.io/kube-scheduler:v1.28.2registry.k8s.io/kube-proxy:v1.28.2registry.k8s.io/pause:3.9registry.k8s.io/etcd:3.5.9-0registry.k8s.io/coredns/coredns:v1.10.17.在Master节点上部署KubernetesMaster。[root@k8s-master~]#kubeadminit--kubernetes-version=v1.28.2--pod-network-cidr=/16--apiserver-advertise-address=0--image-repository/google_containers--cri-socket=unix:///var/run/cri-dockerd.sock参数说明:--kubernetes-version:指定Kubernetes版本号。--pod-network-cidr:指定Pod网络的范围。Kubernetes支持多种网络方案,而且不同的网络方案对--pod-network-cidr有自己的要求,此处设置为

/16

是因为本任务使用CIDR网络地址。--apiserver-advertise-address:如果该Master节点有多网卡,则需要指定;如果不指定,则kubeadm会自动选择有默认网关的interface。如果命令正常执行,则会看到如下显示信息。当看到“initializedsuccessfully”时,表示初始化完成。YourKubernetescontrol-planehasinitializedsuccessfully!Tostartusingyourcluster,youneedtorunthefollowingasaregularuser:mkdir-p$HOME/.kubesudocp-i/etc/kubernetes/admin.conf$HOME/.kube/configsudochown$(id-u):$(id-g)$HOME/.kube/configAlternatively,ifyouaretherootuser,youcanrun:exportKUBECONFIG=/etc/kubernetes/admin.confYoushouldnowdeployapodnetworktothecluster.Run"kubectlapply-f[podnetwork].yaml"withoneoftheoptionslistedat:https://kubernetes.io/docs/concepts/cluster-administration/addons/Thenyoucanjoinanynumberofworkernodesbyrunningthefollowingoneachasroot:kubeadmjoin0:6443--tokenepiy4y.ssndf84avk0oo98t\--discovery-token-ca-cert-hashsha256:d2dc7646df213522ffeeab74e54103dae46b02e11f8de4c4018564689f197343需要记录输出信息的kubeadmjoin命令,后面的Node节点加入集群,就需要用到此命令。kubeadmjoin0:6443--tokenepiy4y.ssndf84avk0oo98t\--discovery-token-ca-cert-hashsha256:d2dc7646df213522ffeeab74e54103dae46b02e11f8de4c4018564689f1973438.配置环境变量,使用kubectl工具,此操作仅需在k8s-master节点上执行。[root@k8s-master~]#mkdir-p$HOME/.kube[root@k8s-master~]#sudocp-i/etc/kubernetes/admin.conf$HOME/.kube/config[root@k8s-master~]#sudochown$(id-u):$(id-g)$HOME/.kube/config[root@k8s-master~]#export

温馨提示

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

评论

0/150

提交评论