k8s的安装部署,详细过程展示(保姆级安装教程)

这篇具有很好参考价值的文章主要介绍了k8s的安装部署,详细过程展示(保姆级安装教程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s应用部署方式演变

在部署应用程序的方式上,主要经历了三个时代:

传统部署:互联网早期,会直接将应用程序部署在物理机上

优点:简单,不需要其它技术的参与

缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响

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

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

缺点:增加了操作系统,浪费了部分资源

容器化部署:与虚拟化类似,但是共享了操作系统

优点:

可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等

运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦

容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署

kubernetes安装部署,k8s,kubernetes,容器,云原生,运维

容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说:

一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器
当并发访问量变大的时候,怎么样做到横向扩展容器数量
这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:

Swarm:Docker自己的容器编排工具
Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用
Kubernetes:Google开源的的容器编排工具

kubernetes安装部署,k8s,kubernetes,容器,云原生,运维

关于k8s的知识我就不赘述了,这次主要实践k8s的安装部署

开始实验

实验环境:

主机 IP 系统 角色
153 192.168.121.153 centos7 master

154 192.168.121.154 centos7 node

155 192.168.121.155 centos7 node

!!!系统一定要2核或者以上,最少要求2核,内存2G或以上

首先在

三台机子都安装docker

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors":["https://hub-mirror.c.163.com/"]}
EOF
systemctl start docker
systemctl enable docker.service

校正时间同步

timedatectl set-timezone Asia/Shanghai
yum install -y ntpdate、
ntpdate   ntp.aliyun.com
timedatectl set-local-rtc 0

配置计划任务自动校正时间(可选,实验环境而已不做也没什么影响)

# crontab  -e    ---配置计划任务
01 */2 * * *  ntpdata   npt.aliyun.com

# systemctl  restart crond.service

配置A记录互相解析

cat >>  /etc/hosts  << EOF
192.168.121.153 server153
192.168.121.154 server154
192.168.121.155 server155
EOF

关闭防火墙

iptables -F
systemctl  stop firewalld
systemctl disable firewalld
setenforce  0
sed -i  '/SELINUX=/c\SELINUX=disabled/'  /etc/selinux/config

关闭swap分区,否则会影响k8s的性能

swapoff -a
sed   -i    '/swap/s/.*/#&/'  /etc/fstab

设置内核及相关网络参数

modprobe   br_netfilter
modprobe  overlay
modprobe  ip_vs
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
ip_vs
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
sysctl -p /etc/sysctl.d/k8s.conf

然后制作k8s的阿里源

cat <<EOF > /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
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean  all
yum makecache fast

然后获取cri-docker安装包

wget https://github.com/Mirantis/cri-dockerd

安装git和go语言编译环境

yum install -y go  git

然后解压cri-docker并编译

tar -xf cri-dockerd.tar.gz
cd cri-dockerd/
make cri-dockerd

将 应用程序拷贝到PATH 环境下

install -o root -g root -m 0755 cri-dockerd    /usr/bin/cri-dockerd

安装 cri-dockerd 服务 systemd service控制文件

install packaging/systemd/*     /usr/lib/systemd/system/

配置systemd service文件

cat > /usr/lib/systemd/system/cri-docker.service << EOF               
[Unit]
Description=CRI 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
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
ExecReload=/bin/kill -s HUP 
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

配置cri-docker.sockrt

cat > /usr/lib/systemd/system/cri-docker.socket  << EOF 
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=root

[Install]
WantedBy=sockets.target
EOF

加载配置文件,启动cri-docker

systemctl  daemon-reload
systemctl  start     cri-docker.service
systemctl  enable  cri-docker.service

查看套接字文件是否启动

ls /var/run/cri-dockerd.sock

然后安装kubelet和kubeadm,用来连接API

yum install  kubelet-1.26.3  kubeadm-1.26.3 -y

三个节点都做相同的配置到这里就可以了

主节点的配置

然后到master节点的配置

下载kubectl

yum install kubectl-1.26.3

查看初始集群所需要的镜像

[root@server153 cri-dockerd]# kubeadm  config  images  list
I1107 20:01:31.050004    7050 version.go:256] remote version is much newer: v1.28.3; falling back to: stable-1.26
registry.k8s.io/kube-apiserver:v1.26.10
registry.k8s.io/kube-controller-manager:v1.26.10
registry.k8s.io/kube-scheduler:v1.26.10
registry.k8s.io/kube-proxy:v1.26.10
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3

查看镜像是因为官方站点在国外,有时候网络不好不一定能下,所以可以切换阿里源镜像,或者准备好镜像在自己的镜像仓库

然后开始初始化集群

[root@server153 cri-dockerd]# kubeadm  init  --apiserver-advertise-address=192.168.121.153  --kubernetes-version=v1.26.3  --image-repository  registry.aliyuncs.com/google_containers  --cri-socket unix:///var/run/cri-dockerd.sock  --service-cidr=10.1.0.0/16 --pod-network-cidr=10.2.0.0/16 --token-ttl=0

初始化好后结尾会如下提示

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

然后执行下面两段代码

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

还有这段token也记得复制

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.121.153:6443 --token 3n3vlb.vpgsgfh6vf77tup0 \
	--discovery-token-ca-cert-hash sha256:c383079099cf763acc2631705cb7361d06e2156dd496ba35b348bfa03e230c36 

这段是node节点加入到集群的口令

做好上面这些之后最好重新连接一下会话,刷新配置

然后去node节点加入到集群 ,用刚才我们复制的口令加入集群
只需要执行下面这段命令就可以了

[root@server154 cri-dockerd]# kubeadm join 192.168.121.153:6443 --token 3n3vlb.vpgsgfh6vf77tup0 --discovery-token-ca-cert-hash sha256:c383079099cf763acc2631705cb7361d06e2156dd496ba35b348bfa03e230c36 --cri-socket unix:///var/run/cri-dockerd.sock

加入成功后会有下面字段的提示

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

然后我们就去master节点执行kubectl get nodes查看集群

[root@server153 cri-dockerd]# kubectl get nodes
NAME        STATUS     ROLES           AGE     VERSION
server153   NotReady   control-plane   8m20s   v1.26.3
server154   NotReady   <none>          2m2s    v1.26.3
server155   NotReady   <none>          98s     v1.26.3

可以看到集群加入成功

但是还有一个问题,那就是网络还没配置,所以状态才会显示NotReady

我们下载flannel,这里注意一个问题

因为是从github下载的,国内网络你们懂的,不一定能拉下载,只能多试几下或者网络好点再下

[root@server153 cri-dockerd]# cd   /etc/kubernetes/manifests
[root@server153 manifests]# wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

查看我们所需的镜像,等下也是要拉镜像的

[root@server153 manifests]# grep  "image:"  kube-flannel.yml
        image: docker.io/flannel/flannel:v0.23.0
        image: docker.io/flannel/flannel-cni-plugin:v1.2.0
        image: docker.io/flannel/flannel:v0.23.0

然后修改配置文件,改两个地方

[root@server153 manifests]# vim kube-flannel.yml

kubernetes安装部署,k8s,kubernetes,容器,云原生,运维

kubernetes安装部署,k8s,kubernetes,容器,云原生,运维

修改好以后就可以部署组件了

[root@server153 manifests]# kubectl apply  -f kube-flannel.yml

然后再查看集群状态

这个等待过程可能是比较久的,因为去国外站点拉镜像是有很慢的,看网络情况的

[root@server153 manifests]# kubectl get nodes
NAME        STATUS     ROLES           AGE   VERSION
server153   NotReady   control-plane   39m   v1.26.3
server154   NotReady   <none>          33m   v1.26.3
server155   NotReady   <none>          33m   v1.26.3
[root@server153 manifests]# kubectl get nodes
NAME        STATUS   ROLES           AGE   VERSION
server153   Ready    control-plane   42m   v1.26.3
server154   Ready    <none>          36m   v1.26.3
server155   Ready    <none>          35m   v1.26.3

然后这样我们的k8s集群就部署好了,当然这个是单master节点的,不是高可用集群的

希望对大家有帮助。文章来源地址https://www.toymoban.com/news/detail-857251.html

到了这里,关于k8s的安装部署,详细过程展示(保姆级安装教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 本地k8s集群搭建保姆级教程(3)-安装k8s集群

    1.1 增加镜像替换脚本 注意:请在master机器上执行 添加脚本内容: 1.2 查看k8s版本 1.3 执行脚本 2.1 初始化master节点 在master机器上执行如下命令: 说明: –apiserver-advertise-address= 你master节点的ip 看到如下内容,说明master节点初始化成功 图片中最后一行记得要保存起来,worker节

    2024年02月15日
    浏览(29)
  • kubernetes(K8S )安装部署 【保姆级步骤保成功】

    1、关闭firewalld和selinux(在k8s集群master和node上都进行操作)     临时关闭     systemctl stop firewalld systemctl disable firewalld setenforce 0 getenforce          service firewalld stop systemctl disable firewalld setenforce 0 getenforce     永久关闭     sed -i \\\'s/enforcing/disabled/\\\' /etc/selinux/config sed -ri \\\'s/

    2024年02月06日
    浏览(40)
  • Kubeadm高可用部署K8S 1.24版本---保姆级超详细!!!

    目录 一、前言 二、基础环境部署 1)前期准备(所有节点) 1、修改主机名和配置 hosts 2、配置 ssh 互信 3、时间同步 4、关闭防火墙 5、关闭 swap 6、禁用 SELinux 7、允许 iptables 检查桥接流量(可选,所有节点) 2)安装容器 docker(所有节点) 3)配置 k8s yum 源(所有节点) 4)

    2023年04月14日
    浏览(28)
  • K8S集群上安装KubeSphere的详细过程

    前提 已经搭建好了k8s集群 1.1、master节点上安装nfs-server服务器: 首先在每个节点上安装nfs工具: 其次,在master节点操作 1.2、配置nfs-client(选做) 在工作节点上操作: 1.3、配置默认存储 配置动态供应的默认存储类(master节点操作) 创建安装storageclass资源: 要保证安装的

    2024年01月19日
    浏览(46)
  • K8S1.23.6版本详细安装教程以及错误解决方案(包括前置环境,使用部署工具kubeadm来引导集群)

    一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。 每台机器 2 GB 或更多的 RAM(如果少于这个数字将会影响你应用的运行内存)。 CPU 2 核心及以上。 集群中的所有机器的网络彼此均能相互连接(公网和

    2024年03月14日
    浏览(31)
  • 保姆级 ARM64 CPU架构下安装部署Docker + rancher + K8S 说明文档

    K8S是Kubernetes的简称,是一个开源的容器编排平台,用于自动部署、扩展和管理“容器化(containerized)应用程序”的系统。它可以跨多个主机聚集在一起,控制和自动化应用的部署与更新。 K8S 架构 Kubernetes 主要由以下几个核心组件组成: etcd 保存了整个集群的状态; apiserv

    2024年01月21日
    浏览(50)
  • K8s集群部署(二进制安装部署详细手册)

       一、简介 K8s部署主要有两种方式: 1、Kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 2、二进制   从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。  本文通过二进制安装部署的方式在centos7上搭建kubernetes集群

    2024年02月15日
    浏览(40)
  • kubernetes(k8s)安装详细教程

    闲来无事,搭一个k8s集群玩玩 最近一次搭建:全过程耗时1.5H 新建3个虚拟机,详情见:虚拟机新建 主机硬件配置说明 最低要求:2c2g 需求 CPU 内存 硬盘 角色 主机名 值 4C 8G 100GB master master01 值 4C 8G 100GB worker(node) worker01 值 4C 8G 100GB worker(node) worker02 由于本次使用3台主机完成

    2024年02月06日
    浏览(36)
  • k8s-1.24.4详细安装教程(附镜像)

    废话不多说,直接介绍怎么安装(这里是安装的CICD环境,后续会一步一步实现gitlab+docker+harbor+k8s+jenkins,不需要的软件,可以直接忽略。) Hostname IP 备注 (为节省虚拟机,安装的其他软件,只装k8s可不安装) master 192.168.47.100 jenkins(至少3G内存) node1 192.168.47.101 harbor node2 192.

    2023年04月08日
    浏览(25)
  • K8s:部署 CNI 网络组件+k8s 多master集群部署+负载均衡及Dashboard k8s仪表盘图像化展示

    目录 1 部署 CNI 网络组件 1.1 部署 flannel 1.2 部署 Calico 1.3 部署 CoreDNS 2 负载均衡部署 3 部署 Dashboard K8S 中 Pod 网络通信: ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命令空间,相当于它们在同一台机器上一样,可以用

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包