当前位置: 首页 > article >正文

k8s部署及安装

1.1、Kubernetes 简介及部署方法

在部署应用程序的方式上面,主要经历了三个阶段

006f88db240d4edb922acfb3aa55f1d9.png

 

传统部署:互联网早期,会直接将应用程序部署在物理机上
优点:简单,不需要其它技术的参与
缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响

虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境

优点:程序环境不会相互产生影响,提供了一定程度的安全性

缺点:增加了操作系统,浪费了部分资源
容器化部署:与虚拟化类似,但是共享了操作系统
容器化部署方式给带来很多的便利,但是也会出现一些问题:
一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器当并发访问量变大的时候,怎么样做到横向扩展容器数量

1.2 容器编排应用

为了解决这些容器编排问题,就产生了一些容器编排的软件:

·Swarm: Docker自己的容器编排工具

· Mesos: Apache的一个资源统一管控的工具,需要和Marathon结合使用

·Kubernetes: Google开源的的容器编排工具

1.3kubenets简介

在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年 Borg系统运行管理着成千上万的容器应用。

 Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。
Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。
kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:
自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器 弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整 服务发现:服务可以通过自动发现的形式找到它所依赖的服务
负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡 版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本 存储编排:可以根据容器自身的需求自动创建存储卷

2.1 k8s 环境部署说明

 
1.habor仓库:
主机名 docker-hub 
ip 172.25.254.250
 
2.master k8s集群控制节点 :
主机名 k8s-master.tininglee.org
ip 172.25.254.100
 
3.worker k8s集群工作节点
主机名 k8s-node1.timing.org
ip 172.15.254.10
 
4.worker k8s集群工作节点
主机名 k8s-node2.timing.org
ip 172.25.254.20
 
1.所有节点禁用selinux防火墙
2.所有节点同步时间和解析
3.所有节点安装docker-ce
4.所有节点禁用swap,注意注释掉/etc/fstab文件中的定义
 
1.
systemctl disabled firewalld
systemctl stop firewalld
grubby --update-kernel ALL --args selinux=0
 
2.
vim /etc/rc.d/rc.local
swapoff /dev/dm-1
chmod +x /etc/rc.d/rc.local
3.
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.100 k8s-master
172.25.254.10 k8s-node1.timinglee.org
172.25.254.20 k8s-node2.timinglee.org
172.25.254.250 reg.timinglee.org
4.cat /etc/yum.repos.d/docker-ce.repo 
[docker]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck=0
dnf install docker-ce -y

2.2安装k8s部署工具

[root@k8s-master ~]# cat /etc/yum.repos.d/k8s.repo 
[k8s]
name=k8s
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
gpgcheck=0
 
dnf install kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y

设置kubectl命令补齐功能

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

[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc[root@k8s-master ~]# source ~/.bashrc

在所有节点安装cri-docker

root@k8s-master ~l#ls

cri-dockerd -0.3.14-3.el8.x86 64.rpm

libcgroup-0.41-19.el8.x86 64.rpm

[root@k8s-master ~]# yum install *.rpm -y

root@k8s-master~l#systemctl enable --now cri-dockerCreated symlink /etc/systemd/'svstem/multi-user.target.wantscr-docker.sevice - /usr/lib/systemd/svstem/cri-docker.service[root@k8s-master ~]# vim /lib/systemd/system/cri-docker.service

[Unit]

Description=CRl Interface for Docker Application Container Engine

Documentation=https://docs.mirantis.com

After=network-online.target firewalld.service docker.service

Wants=network-online.target

Requires=cri-docker.socket

[Service]

Type=notify

[root@k8s-master ~]# systemctl daemon-reload[root@k8s-master ~]# systemctl start cri-docker[root@k8s-master ~]#ll /var/run/cri-dockerd.sock

srw-rw---- 1 root docker 1 0 月 10 23:19 /var/run/cri-dockerd.sock #cri-dockerd的套接字文件

在master节点拉取k8s所需镜像

#拉取k8s集群所需要的镜像

[root@k8s-master ~]# kubeadm config images pull \

--image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.30.0\

--cri-socket=unix:///var/run/cri-dockerd.sock

[root@k8s-master ~]# docker images | awk '/google/{ print $1":"$2}' \| awk -F "/" '{system("docker tag "$0" reg.timinglee.org/k8s/"$3)}'

[root@k8s-master ~]# docker images | awk '/k8s/{system("docker push "$1":"$2)}'

ed063149d1a64b60b585c2ba273cc633.png

 3.集群初始化

启动kubelet服务

#执行初始化命令
[root@k8s-master ~]# kubeadm init --pod-network-cidr=192.188.0.0/16\ --image-repository reg.timinglee.org/k8s \ --kubernetes-version v1.30.0\
--cri-socket=unix:///var/run/cri-dockerd.sock
[root@k8s-master ~]# kubeadm reset --cri-socket=unix:///var/run/cri-dockerd.sock    #重置集群    
#指定集群配置文件变量
[root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile#当前节点没有就绪,因为还没有安装网络插件,容器没有运行[root@k8s-master ~]# kubectl get node
NAME    STATUS ROLES    AGE VERSION    
k8s-master.timinglee.org NotReady control-plane 4m25s v1.30.0
root@k8s-master ~]# kubectl get pod -A
NAMESPACE NAME    READY STATUS RESTARTS AGE    
kube-system coredns-647dc95897-2sgn8    0/1 Pending 0    6m13s    
kube-system coredns-647dc95897-bvtxb    0/1 Pending 0    6m13s    
kube-system etcd-k8s-master.timinglee.org    1/1 Running 0    6m29s    
kube-system kube-apiserver-k8s-master.timinglee.org    1/1 Running 0    6m30s    
kube-system kube-controller-manager-k8s-master.timinglee.org 1/1 Running 0    6m29s    
kube-system kube-proxy-fq85m    1/1 Running 0    6m14s    
kube-system kube-scheduler-k8s-master.timinglee.org    1/1 Running 0    6m29s

 

a8c38523f1384ff6b40cdfbc1fe7f06f.png

 

指定网络插件

 [root@k8s-master ~]# vim kube-flannel.yml   

image: reg.timinglee.org/flannel/flannel:v0.25.5

image: reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1 image: reg.timinglee.org/flannel/flannel:v0.25.5

[root@k8s-master ~]# docker load -i flannel-0.25.5.tag.gz

先建立flannel项目

[root@k8s-master ~]# docker tag flannel/flannel:v0.25.5 reg.timinglee.org/flannel/flannel:v0.25.5[root@k8s-master ~]# docker push reg.timinglee.org/flannel/flannel:v0.25.5

[root@k8s-master ~]# docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 reg.timinglee.org/flannel/flannei[root@k8s-master ~]# docker push reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1安装

[root@k8s-master ~]# kubectl apply -f kube-flannel.yml测试

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

NAME STATUS ROLES AGE VERSION 

k8s-master.timinglee.org Ready control-plane 17m v1.30.5

将工作加入集群

kubeadm join 172.25.254.100:6443 --token5hwptm.zwn7epa6pvatbpwf--discovery-token-ca-cert-hashsha256:52f1a83b70ffc8744db5570288ab51987ef2b563bf906ba4244a300f61e9db23 --cri-socket=unix:///var/run/cri-dockerd.sock

62299a21d1b94185be76c9f57f3dddfd.png

 


http://www.kler.cn/news/343292.html

相关文章:

  • Excel中的屠龙大招
  • YOLO11改进|SPPF篇|引入SPPFCSPC金字塔结构
  • Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
  • C++中数据类型的大小
  • uibot发送邮件:自动化邮件发送教程详解!
  • 高清实拍类型视频素材网站推荐
  • vue页面使用v-print指令打印表格表单的几种方法,包括页眉标题自定义设置
  • Word排版 | 如何文字部分固定行距、图片(嵌入型)单倍行距
  • RFID技术在汽车焊接生产线的智能应用与优化
  • 【Qt Quick】状态:State 使用
  • Rpc框架开发——客户端框架设计
  • datax使用clickhousereader报错国际化资源不存在
  • WordPress个人博客主题wp-Concise-v1.0
  • 智云人才推荐与管理系统
  • mig IP核的学习
  • Flexbox 弹性盒子布局
  • 代码随想录day32:动态规划part5
  • Windows电脑本地安装AI文生音乐软件结合内网穿透远程访问制作
  • 基于JavaWeb开发的java springmvc+mybatis学生考试系统设计和实现
  • Linux系统性能调优实战指南