【项目实战15】k8s(1)—k8s的部署(图文详解安装,集群部署过程)

一、前言

一、简介

为方便docker的管理,Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合。
(1)Kubernetes的好处:
(2)隐藏资源管理和错误处理,用户仅需要关注应用的开发。
服务高可用、高可靠。
(3)可将负载运行在由成千上万的机器联合而成的集群中。

二、k8s特点

在这里插入图片描述

Kubernetes主要由以下几个核心组件组成:
(1)etcd:保存了整个集群的状态
(2)apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
(3)controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
(4)scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
(5)kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
(6)Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI)
(7) kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡

除了核心组件,还有一些推荐的Add-ons:
(1)kube-dns:负责为整个集群提供DNS服务
(2)Ingress Controller:为服务提供外网入口
(3)Heapster:提供资源监控
(4)Dashboard:提供GUI
(5)Federation:提供跨可用区的集群
(6)Fluentd-elasticsearch:提供集群日志采集、存储与查询

二、安装

一、安装地址

1)、官方地址
https://kubernetes.io/zh/docs/home/
进入主界面
在这里插入图片描述
先设置安装安装工具kubeadm,跟着步骤走就行
在这里插入图片描述
1)、阿里云地址
以上的步骤比较麻烦,可以直接使用阿里云的镜像服务进行安装。
在这里插入图片描述

二、配置环境

1、需要4台虚拟机,server1~server4,
server1:172.25.42.1 部署harbor仓库,安装docker
server2:172.25.42.2 安装docker,将作为k8s的管理端(要求cpu大于等于2,内存大于等于2048)
server3:172.25.42.3 安装docker,将作为k8s的node节点
server4:172.25.42.4 安装docker,将作为k8s的node节点
2、关闭节点的selinux和iptables防火墙
3、所有节点部署docker引擎,配置网桥

三、安装过程

server1-4
1、部署docker

yum install -y docker-ce docker-ce-cli 
vim /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 
sysctl --system

2、如果前期部署了docker,清理,纯化环境
server2-4
对k8s的虚拟机的images、volumes、service、container、network、stack、swarm进行清理,作为仓库的server1保留之前的images等文件

docker service ls 
docker service rm service 
cd /etc/systemd/system/docker.service.d/ 
rm -f 10-machine.conf 
docker network prune                          清理网络 
docker volume prune                           清理数据卷 
docker image prune                            清理镜像 
docker container prune                        清理容器 
docker swarm leave                            有swarm节点的也需要离开和删除节点
systemctl daemon-reload 
systemctl restart docker

如果全部删除后,无法重启docker。如果报错信息显示是无法找到socket文件,可以如下修改/usr/lib/systemd/system/docker.service文件,使其找到socket文件。
在这里插入图片描述

3、禁用server2~server4主机的swap分区
注意etc/fstab里要注释,防止开机自启

swapoff -a
vim /etc/fstab

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

4、修改部署k8s虚拟机的仓库和管理驱动
server2~server4
将Docker使用的Cgroup Driver改为systemd,因为systemd是Kubernetes自带的cgroup管理器

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://reg.westos.org"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

systemctl daemon-reload
systemctl restart docker

可以查看到cggroup管理变为了systemd
在这里插入图片描述

5、增设k8s的yum源
server2-4

[root@server2 yum.repos.d]# vim k8s.repo 

//
[kubernets]
name=Kubernets
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
//

在这里插入图片描述
5、安装
server2-4
安装k8s的组件,设置开机自启动

yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet.service

在这里插入图片描述
6、建立k8s的仓库,方便后期镜像管理
在这里插入图片描述
7、查看配置的信息
虚拟机联网后查看k8s需要的镜像文件,因为k8s也是通过镜像的方式进行部署。这里我们上传所需要的镜像到harbor仓库,然后进行部署

kubeadm config print init-defaults	                                                                                        图1、查看当前的配置信息如下
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers                                       图2、列出阿里云提供的镜像

图1、查看到当前的配置信息如下
在这里插入图片描述

在这里插入图片描述
对于阿里云的镜像此时有两种下载方式
方法一

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers        从阿里云拉取镜像

在这里插入图片描述
可以在docker镜像里面查看刚刚从阿里云下载的镜像文件
在这里插入图片描述
更改标签,登陆harbor账户,上传镜像

docker images |grep registry|awk '{print $1":"$2}'|awk  -F  / '{system("docker tag "$0" reg.westos.org/k8s/"$3"")}'                    图1、更改标签
docker login reg.westos.org                                                                                                            图2、登陆harbor账户
docker images | grep ^reg.westos.org | awk '{system("docker push "$1":"$2"")}'                                                         图3、上传镜像到仓库

图1、更改标签
在这里插入图片描述
图2、登陆harbor
在这里插入图片描述
图3、上传镜像到仓库
在这里插入图片描述

方法二
获取k8s的安装包,上传包到harbor仓库。提前把所需镜像放到server1的harbor仓库里,当server2-4需要这些文件时从仓库拉取。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
仓库里面看到上传的7个文件
在这里插入图片描述
8、修改flannel网络组件的标签,并上传到reg.westos.org/library
在这里插入图片描述

三、初始化集群

1、发送证书到其他服务器
server1

scp -r /etc/docker/certs.d/ server2:/etc/docker/certs.d/  
scp -r /etc/docker/certs.d/ server3:/etc/docker/certs.d/  
scp -r /etc/docker/certs.d/ server4:/etc/docker/certs.d/  

2、初始化
server2
k8s集群的管理主机

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s

在这里插入图片描述
在这里插入图片描述
3、配置环境变量,跟随提示进行操作
server2
这里我们是root用户,所以选择按照提示配置环境变量,并写入.bash_profile中

export KUBECONFIG=/etc/kubernetes/admin.conf
vim .bash_profile

//
export KUBECONFIG=/etc/kubernetes/admin.conf

在这里插入图片描述

4、设置补齐功能
server2

[root@server2 ~] echo "source <(kubectl completion bash)" >> ~/.bashrc            %配置kubectl命令补齐功能,成功后,命令行输入kubectl 然后tab可以补出命令
[root@server2 ~] source ~/.bashrc

5、安装flannel网络组件
server2
查看目前的系统配置,发现flanner插件没有启用,需要安装flanner插件

[root@server2 network-scripts] kubectl get pod -n kube-system 

在这里插入图片描述
从网上获取yml文件,查看flanner的yml配置文件里面的镜像文件地址。

[root@server2 ~] yum install wget
[root@server2 ~] wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml                                           获取插件
[root@server2 ~] vim kube-flannel.yml                                                                                                                  查看flanner插件

查看到一共需要3个镜像,但有两个是相同的镜像,因此我们在docker仓库用阿里云拉取这两个镜像
在这里插入图片描述
在docker仓库拉取刚刚yml文件里面需要的镜像文件(用阿里云加速)

[root@server1 certs.d] docker pull rancher/mirrored-flannelcni-flannel-cni-plugin:v1.0.1
[root@server1 certs.d] docker pull rancher/mirrored-flannelcni-flannel:v0.17.0

建立对应的仓库地址
在这里插入图片描述
在这里插入图片描述
给刚才下载的镜像打标签,上传flanner镜像到yml文件里面的设置的rancher库

[root@server1 docker] docker tag  rancher/mirrored-flannelcni-flannel:v0.17.0 reg.westos.org/rancher/mirrored-flannelcni-flannel:v0.17.0
[root@server1 docker] docker tag rancher/mirrored-flannelcni-flannel-cni-plugin:v1.0.1 reg.westos.org/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.0.1
[root@server1 docker] docker push reg.westos.org/rancher/mirrored-flannelcni-flannel-cni-plugin:v1.0.1 
[root@server1 docker] docker push reg.westos.org/rancher/mirrored-flannelcni-flannel:v0.17.0

可以在harbor仓库的rancher库里面查看到镜像文件
在这里插入图片描述

6、启动组件,查看全部服务
server2
在这里插入图片描述
7、其他主机加入集群
server3、4
server3、4加入到server2部署好的k8s集群中,使用的命令就是初始化后提示的信息
在这里插入图片描述
8、查看
在server2处,查看server3、server4确实已经加入集群。
在这里插入图片描述
在server3、server4可以查看到集群的插件已经部署完毕。
在这里插入图片描述

  • 7
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于在 Kubernetes 集群部署 Tomcat 项目的实战,我可以给你一些建议。 首先,确保你已经安装Kubernetes 集群,并且可以使用 kubectl 命令与集群进行交互。 接下来,创建一个 Tomcat 的 Deployment。可以通过编写一个 YAML 文件来定义 Deployment,示例如下: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: tomcat-deployment spec: replicas: 3 # 你可以根据需求调整副本数量 selector: matchLabels: app: tomcat template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: tomcat:latest # 根据你的需求选择合适的 Tomcat 镜像 ports: - containerPort: 8080 # Tomcat 默认监听的端口是 8080 ``` 保存以上内容为一个文件(例如 `tomcat-deployment.yaml`),然后使用 kubectl 命令将其部署集群中: ``` kubectl apply -f tomcat-deployment.yaml ``` 这样,Kubernetes 将会创建一个包含 3 个副本的 Tomcat Deployment。 接下来,你可以创建一个 Service 来将流量引入到 Tomcat Pod 中。创建一个 YAML 文件,示例如下: ```yaml apiVersion: v1 kind: Service metadata: name: tomcat-service spec: selector: app: tomcat ports: - protocol: TCP port: 80 # 定义 Service 的端口 targetPort: 8080 # 将流量转发到 Tomcat Pod 的 8080 端口 type: LoadBalancer # 如果你在云平台上部署,可以选择 LoadBalancer 类型,否则可以选择 NodePort 类型 ``` 保存以上内容为一个文件(例如 `tomcat-service.yaml`),然后使用 kubectl 命令将其部署集群中: ``` kubectl apply -f tomcat-service.yaml ``` 这样,Kubernetes 将会创建一个 Service,并将外部流量引导到 Tomcat Pod 的 8080 端口。 现在,你应该可以通过访问 Service 的 IP 地址来访问 Tomcat 项目了。你可以使用 `kubectl get services` 命令来查看 Service 的 IP 地址。 希望这些信息对你有所帮助!如果你还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值