如何利用Kubeadm搭建K8S容器化测试环境!

2485 篇文章 2 订阅
2322 篇文章 14 订阅

软件测试面试刷题,这个小程序(永久刷题),靠它可以快速找到工作!https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

环境规划:

操作系统:centos7.8

配置:4Gib 内存/2vCPU/100G 硬盘

01 实验环境准备

配置机器主机名

#在主节点上执行 

[root@test-0020 ~]# hostnamectl  set-hostname  k8s-master && bash

#在工作节点node1上执行 

[root@test-0021 ~]# hostnamectl  set-hostname  k8s-node1 && bash

#在工作节点node2上执行 

[root@test-0022 ~]# hostnamectl  set-hostname  k8s-node2 && bash

配置主机 hosts 文件,相互之间通过主机名互相访问

三台节点都需要添加

[root@k8s-master ~]# vim /etc/hosts

10.30.11.180 k8s-master 

10.30.11.181 k8s-node1

10.30.11.182 k8s-node2

配置主机之间无密码登录

#三台节点都需要做

[root@k8s-master ~]# ssh-keygen   #一路回车,不输入密码

#把本地生成的密钥文件和私钥文件拷贝到远程主机

[root@k8s-master ~]# ssh-copy-id -i k8s-master

[root@k8s-master ~]# ssh-copy-id -i k8s-node1

[root@k8s-master ~]# ssh-copy-id -i k8s-node2

关闭交换分区 swap,提升性能

#临时关闭,三台节点都需要做

[root@k8s-master ~]# swapoff  -a


#永久关闭:注释 swap 挂载,给 swap 这行开头加一下注释

[root@k8s-master ~]# vim /etc/fstab

#/dev/mapper/centos-swap swap swap defaults 0 0

修改机器内核参数

三台节点都需要做

[root@k8s-master ~]# modprobe br_netfilter

[root@k8s-master ~]# echo "modprobe br_netfilter" >> /etc/profile

[root@k8s-master ~]# vim  /etc/sysctl.d/k8s.conf 

net.bridge.bridge-nf-call-ip6tables = 1 

net.bridge.bridge-nf-call-iptables = 1 

net.ipv4.ip_forward = 1 

[root@k8s-master ~]# sysctl -p /etc/sysctl.d/k8s.conf

关闭 firewalld 防火墙和selinux

三台节点都需要做

[root@k8s-master ~]# systemctl stop firewalld && systemctl disable firewalld


#修改 selinux 配置文件之后,重启机器,selinux 配置才能永久生效

[root@k8s-master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

配置阿里云的 repo 源

三台节点都需要配置

#安装 wget 命令

[root@k8s-master ~]# yum -y install wget

#备份基础 repo 源

[root@k8s-master ~]# mkdir /root/repo.bak

[root@k8s-master ~]# mv /etc/yum.repos.d/* /root/repo.bak

#下载阿里云的 repo 源

[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

[root@k8s-master ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

#配置国内阿里云 docker 的 repo 源

[root@k8s-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#配置安装 k8s 组件需要的阿里云的 repo 源

[root@k8s-master ~]# vim /etc/yum.repos.d/kubernetes.repo

[kubernetes] 

name=Kubernetes 

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ 

enabled=1 

gpgcheck=0

#运行 yum makecache 生成缓存

[root@k8s-master ~]# yum makecache

配置时间同步

三台节点都需要配置

#安装 ntpdate 命令

[root@k8s-master ~]# yum install ntpdate -y

#跟网络时间做同步

[root@k8s-master ~]# ntpdate cn.pool.ntp.org

#把时间同步做成计划任务

[root@k8s-master ~]# crontab -e

 * */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

 #重启 crond 服务

 [root@k8s-master ~]# systemctl  restart  crond.service

开启ipvs

三台节点都需要配置

[root@k8s-master ~]# vim  /etc/sysconfig/modules/ipvs.modules

#!/bin/bash

ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"

for kernel_module in ${ipvs_modules}; do

 /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1

 if [ 0 -eq 0 ]; then

 /sbin/modprobe ${kernel_module}

 fi

done

[root@k8s-master ~]#  chmod 755 /etc/sysconfig/modules/ipvs.modules  &&  bash /etc/sysconfig/modules/ipvs.modules  &&  lsmod | grep ip_vs

安装基础软件包

三台节点都需要安装

[root@k8s-master ~]#  yum install -y yum-utils device-mapper-persistent-data lvm2  net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl  curl-devel unzip sudo ntp libaio-devel  vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm

02 安装 docker 服务

安装 docker-ce

三台节点都需要安装

[root@k8s-master ~]#  yum install docker-ce-20.10.6 docker-ce-cli-20.10.6  containerd.io -y

[root@k8s-master ~]#  systemctl start docker && systemctl enable docker.service  && systemctl status  docker.service

配置 docker 镜像加速器和驱动

三台节点都需要配置

[root@k8s-master ~]#  vim /etc/docker/daemon.json

{ 

 "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"] 

}

#修改 docker 文件驱动为 systemd,默认为 cgroupfs,kubelet 默认使用 systemd,两者必须一致才可以。

[root@k8s-master ~]#  systemctl daemon-reload && systemctl restart docker &&  systemctl status docker

03 安装 软件包

安装初始化 k8s 需要的软件包

三台节点都需要安装

[root@k8s-master ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6 

[root@k8s-master ~]# systemctl enable kubelet  &&   systemctl status kubelet

图片

#上面可以看到 kubelet 状态不是 running 状态,这个是正常的,不用管,等 k8s 组件起来这个 kubelet 就正常了。

注:每个软件包的作用

  • Kubeadm: kubeadm 是一个工具,用来初始化 k8s 集群的

  • kubelet: 安装在集群所有节点上,用于启动 Pod 的

  • kubectl: 通过 kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

04 初始化 k8s 集群

kubeadm 初始化 k8s 集群

#把初始化 k8s 集群需要的离线镜像包上传到 三台机器上,手动解压(没有包的,可以忽略不做)
[root@k8s-master ~]# docker load -i k8simage-1-20-6.tar.gz

#使用 kubeadm 初始化 k8s 集群

[root@k8s-master ~]#  kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=10.30.11.180 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

注:–image-repository registry.aliyuncs.com/google_containers:手动指定仓库地址为

registry.aliyuncs.com/google_containers。kubeadm 默认从 k8s.grc.io 拉取镜像,但是k8s.gcr.io 访问不到,所以需要指定从registry.aliyuncs.com/google_containers仓库拉取镜像。

显示如下,说明安装完成:

图片

kubeadm join 10.30.11.180:6443 --token pyfcsa.h2bbcgr67d1xt5hg

- -discovery-token-ca-cert-hash sha256:6ebd3797f8550e089968b23f2ca5b457c67c77768fe86e8b1ca0eddd3017cba6

#上面命令是把 node 节点加入集群,需要保存下来,每个人的都不一样

#配置 kubectl 的配置文件 config,相当于对 kubectl 进行授权,这样 kubectl 命令可以使用这个证书对 k8s 集群进行管理

[root@k8s-master ~]# mkdir -p $HOME/.kube

[root@k8s-master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@k8s-master ~]# chown $ (id -u):$(id -g) $HOME/.kube/config

[root@k8s-master ~]# kubectl  get nodes

图片

#此时集群状态还是 NotReady 状态,因为没有安装网络插件。

05 扩容 k8s 集群

扩容 k8s 集群-添加两个工作节点

在 k8s-master上查看加入节点的命令

[root@k8s-master ~]# kubeadm token create --print-join-command

把 k8s-node1和 k8s-node2 加入 k8s 集群:

在k8s-node1上执行命令

[root@k8s-node1 ~]# kubeadm join 10.30.11.180:6443 --token iel0ae.sno2znw28v5kup2k     --discovery-token-ca-cert-hash sha256:6ebd3797f8550e089968b23f2ca5b457c67c77768fe86e8b1ca0eddd3017cba6



在k8s-node2上执行命令

[root@k8s-node2 ~]# kubeadm join 10.30.11.180:6443 --token iel0ae.sno2znw28v5kup2k     --discovery-token-ca-cert-hash sha256:6ebd3797f8550e089968b23f2ca5b457c67c77768fe86e8b1ca0eddd3017cba6
k8s-master上查看集群节点状况

[root@k8s-master ~]# kubectl  get nodes

图片

注意:上面状态都是 NotReady 状态,说明没有安装网络插件

可以看到 k8s-node1、k8s-node2 的 ROLES 角色为空,<none>就表示这个节点是工作节点。

可以把 k8s-node1 和 k8s-node2 的 ROLES 变成 work,按照如下方法:

[root@k8s-master ~]#  kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker


[root@k8s-master ~]#  kubectl label node k8s-node2 node-role.kubernetes.io/worker=worker

06 安装 Calico

安装 kubernetes 网络组件-Calico

下载 calico.yaml 到 k8s-master上,使用 yaml 文件安装 calico 网络插件

[root@k8s-master ~]# kubectl apply -f /etc/kubernetes/calico/calico.yaml

查看calico的pod状态  #STATUS 状态是 Ready,说明 k8s 集群正常运行了

[root@k8s-master ~]# kubectl get pod -n kube-system

07 部署 tomcat 服务

测试 k8s 集群中部署 tomcat 服务

[root@k8s-master ~]# vim  tomcat.yaml


apiVersion: v1  #pod属于k8s核心组v1

kind: Pod  #创建的是一个Pod资源

metadata:  #元数据

  name: demo-pod  #pod名字

  namespace: default  #pod所属的名称空间

  labels:

    app: myapp  #pod具有的标签

    env: dev      #pod具有的标签

spec:

  containers:      #定义一个容器,容器是对象列表,下面可以有多个name

  - name:  tomcat-pod-java  #容器的名字

    ports:

    - containerPort: 8080

    image: tomcat:8.5-jre8-alpine   #容器使用的镜像

    imagePullPolicy: IfNotPresent

    

[root@k8s-master ~]# kubectl apply -f tomcat.yaml   


[root@k8s-master ~]# kubectl get pods

图片

[root@k8s-master ~]# vim   tomcat-service.yaml



apiVersion: v1

kind: Service

metadata:

  name: tomcat

spec:

  type: NodePort

  ports:

    - port: 8080

      nodePort: 30080

  selector:

    app: myapp

    env: dev

[root@k8s-master ~]# kubectl apply -f tomcat-service.yaml



[root@k8s-master ~]#  kubectl get svc

图片

在浏览器访问 k8s-node1 节点的 ip:30080 即可请求到浏览器

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker和Kubernetes(简称K8s)是现今最流行的容器技术和容器编排平台。可以通过Docker来创建和管理容器的应用程序,而Kubernetes则可以自动部署、扩展和管理这些容器的应用程序。在搭建测试环境时,使用Docker和Kubernetes可以快速、高效地创建多节点的测试环境。 以下是一些搭建测试环境的步骤: 1. 安装Docker和Kubernetes:首先需要在测试机器上安装Docker和Kubernetes。可以通过官方网站上的安装包或者通过命令行安装。例如,在Ubuntu上可以通过以下命令安装Docker和Kubernetes: ``` sudo apt-get update sudo apt-get install docker.io sudo apt-get install kubeadm kubelet kubectl ``` 2. 初始Kubernetes集群:使用kubeadm工具初始Kubernetes集群,在一个主节点上运行以下命令: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 其中,`--pod-network-cidr`参数指定了容器的IP地址范围。初始完成后,会输出一些重要的信息,例如加入集群的命令和Kubernetes Dashboard的访问地址等。 3. 部署网络插件:为了使Kubernetes集群中的容器可以相互通信,需要部署一个网络插件。例如,可以使用Flannel网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 4. 加入工作节点:在其他机器上也安装好Docker和Kubernetes后,可以使用之前输出的加入集群的命令将它们加入到Kubernetes集群中。 5. 部署应用程序:使用kubectl命令部署应用程序,例如: ``` kubectl create deployment nginx --image=nginx ``` 这将在Kubernetes集群中创建一个名为nginx的Deployment,并使用nginx镜像创建一个Pod。 6. 扩展应用程序:使用kubectl命令扩展应用程序,例如: ``` kubectl scale deployment nginx --replicas=3 ``` 这将扩展nginx Deployment的副本数为3个。 以上是一个简单的Docker加Kubernetes搭建测试环境的步骤。当然,还可以根据实际需求进行更多的配置和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值