K8S—集群部署

这篇具有很好参考价值的文章主要介绍了K8S—集群部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、K8S概述:

        K8s是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩展容维护等功能,k8s的原名是kubernetes。

1.1、K8s的功能:

  • 有大量跨主机的容器需要管理
  • 快速部署应用快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用情况
  • 服务发现与负载均衡
  • 自动化部署与回滚、自动修复、自动扩缩容、维护等功能

1.2、核心角色与功能:

  • master(管理节点):

        作用:管理节点,提供集群的控制,对集群进行全局决策,检测和响应集群事件

        组成:apiserver,scheduler,etcd和controllermanager服务组成

  • node(计算节点)

        作用:运行容器的实际节点,维护运行Pod,并提供具体应用的运行环境

        组成:kubelet、kube-proxy和docker组成

  • 镜像仓库

1.3、master节点服务

        Api server:是整个系统的对外接口,供客户端和其它组件调用。

        scheduler:负责对集群内部的资源进行调度,相当于“调度室”。两个过程:一种筛选,一种优选。

        controller manager:负责管理控制器,相当于“大总管”。

        etcd:kubernetes在运行过程中产生的元数据全部存储在etcd中。在键的组织上etcd采用了层次化的空间结构

2、集群部署(kubeadm方式)

2.1、环境准备

master(管理主机):2CPU、4G  192.168.4.10

​node01(计算节点):2CPU、2G  192.168.4.11
node02(计算节点):2CPU、2G  192.168.4.12

2.2、以下操作需要在所有节点上执行

1)所有节点操作系统初始化,关闭swap、selinux、firewalld,关闭不需要的服务

[root@master ~]# swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
[root@master ~]# setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@master ~]# systemctl stop firewalld && systemctl disable firewalld
[root@master ~]# systemctl stop postfix.service && systemctl disable postfix.service 

2)Hosts文件的相互解析

[root@master ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.4.10 master
192.168.4.11 node01
192.168.4.12 node02

3)针对Kubernetes调整内核参数,文件本身不存在

[root@master ~]# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1	   # 开启桥设备内核监控(ipv6)
net.bridge.bridge-nf-call-iptables = 1     # 开启桥设备内核监控(ipv4)
net.ipv4.ip_forward = 1			           # 开启路由转发
[root@master ~]# modprobe br_netfilter     # 加载内核模块,开启netfilter对bridge设备的监控
[root@master ~]# sysctl --system           # 加载上面的k8s.conf配置文件

4)时间同步

[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DNS1=8.8.8.8
[root@master ~]# systemctl restart network
[root@master ~]# yum -y install ntpdate
[root@master ~]# ntpdate time.windows.com

5)安装IPVS代理软件包

[root@master ~]# yum install -y ipvsadm ipset   # 使用lvs负载均衡调用集群的负载均衡
[root@master ~]# ipvsadm -Ln                    # 查看设置的规则

6)配置yum源

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

# 安装epel源,并将repo 配置中的地址替换为阿里云镜像站地址
[root@master ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@master ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@master ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

# 下载阿里云的yum源文件
[root@master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
[root@master ~]# yum clean all && yum makecache 
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

# 配置docker源
[root@master ~]# wget https://download.docker.com/linux/centos/docker-ce.repo -P /etc/yum.repos.d/

# 添加阿里云软件
[root@master ~]# 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

 7)配置镜像加速器

[root@master ~]# mkdir /etc/docker
[root@master ~]# cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
EOF

 8)安装软件

        master节点上安装docker、kubeadm、kubelet、kubectl

        node节点上安装docker、kubeadm、kubelet

[root@master ~]# systemctl daemon-reload 
[root@master ~]# yum install -y docker-ce kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
[root@master ~]# systemctl enable docker && systemctl start docker
[root@master ~]# systemctl enable kubelet
[root@master ~]# docker info
[root@master ~]# docker info | grep "Cgroup Driver"
 Cgroup Driver: systemd

 9)设置tab键,可以使得kubeadm可以直接tab出来

[root@master ~]# kubectl completion bash >/etc/bash_completion.d/kubectl
[root@master ~]# kubeadm completion bash >/etc/bash_completion.d/kubeadm
[root@master ~]# exit

 2.3、master节点上初始化集群

1)kubeadm部署K8S集群

[root@master ~]# kubeadm config images list       # 查询K8S集群镜像的清单,可以用docker pull下载
[root@master ~]# kubeadm init \
--apiserver-advertise-address=192.168.4.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.10 \
--service-cidr=10.254.0.0/16 \
--pod-network-cidr=10.244.0.0/16 

k8s集群部署,K8S,kubernetes,java,docker

--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虚拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致

 2)执行命令授权,该命令在安装完k8s后会有提示,完成集群的授权

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

3)验证kubeadm的安装

[root@master ~]# kubectl version
[root@master ~]# kubectl get componentstatuses 
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok                              
scheduler            Healthy   ok                              
etcd-0               Healthy   {"health":"true","reason":""}  

 3)获取master的token,认证文件token存放在/etc/kubernetes/pki/ca.crt里

[root@master ~]# cat /etc/kubernetes/pki/ca.crt 
[root@master ~]# kubeadm token list                              # 列出当前的token
TOKEN                     TTL         EXPIRES                USAGES                   DESCRIPTION                           
                     EXTRA GROUPSsks6id.zmd12cv1c4h975da   23h         2022-05-29T13:09:20Z   authentication,signing   The default bootstrap token generated 
by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token
[root@master ~]# kubeadm token delete sks6id.zmd12cv1c4h975da    # 删除原有的token,因为有时间限制
bootstrap token "sks6id" deleted
[root@master ~]# kubeadm token create --ttl=0 --print-join-command  # 创建生命周期为无限的token
kubeadm join 192.168.4.10:6443 --token 9scoj9.5fmlb4vqdxh8k51m --discovery-token-ca-cert-hash sha256:1d333f91bbe47d87a94ae65
cb8ce474db19e8c98fe49550c438408a8d1fef009 
[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt |openssl rsa -pubin -outform der |openssl dgst -sha256 -hex      # 获取token_hash

2.4、node节点加入集群

[root@node01 ~]# kubeadm join 192.168.4.10:6443 --token <token> \
--discovery-token-ca-cert-hash sha256:<token ca hash> 

k8s集群部署,K8S,kubernetes,java,docker

 1)flaanel网络插件

  • 方式一
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 方式二 
[root@master ~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@master ~]# vim kube-flannel.yml 
128       "Network": "10.254.0.0/16",     # 与--pod-network-cidr保持一致
182         image: rancher/mirrored-flannelcni-flannel:v0.17.0
197         image: rancher/mirrored-flannelcni-flannel:v0.17.0
[root@master ~]# kubectl apply -f kube-flannel.yml 

  2.5、验证 

[root@master ~]# kubectl create deployment nginx --image=nginx
[root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
[root@master ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-85b98978db-pv6ns   1/1     Running   0          62m

NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.254.0.1     <none>        443/TCP        41h
service/nginx        NodePort    10.254.55.99   <none>        80:31317/TCP   61m
  • 浏览器访问: http://NodeIP:31317

master节点配置

mkdir /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config


 文章来源地址https://www.toymoban.com/news/detail-531068.html

到了这里,关于K8S—集群部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【k8s】基于Prometheus监控Kubernetes集群安装部署

    目录 基于Prometheus监控Kubernetes集群安装部署 一、环境准备 二、部署kubernetes集群 三、部署Prometheus监控平台 四、部署Grafana服务 五、grafana  web操作 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168

    2024年02月12日
    浏览(41)
  • kubernetes集群(k8s)之安装部署Calico 网络

    目录 安装部署Calico 网络 (一)环境准备 (二)部署docker环境 (三)部署kubernetes集群 (四)部署Calico网络插件 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168.100.133 k8s-node02 kubeadm、kubelet、kube

    2024年02月12日
    浏览(42)
  • [kubernetes]二进制部署k8s集群-基于containerd

    k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。 除了containerd,比较流行的容器运行时还有podman,但是podman官方安装

    2024年02月12日
    浏览(39)
  • kubernetes(k8s)集群超级详细超全安装部署手册

    针对机器已安装过k8s的情况,如未安装过,请忽略。 k8s重置命令(如果初始化的过程出现了错误就使用重置命令): kubeadm reset 1.1 准备工作(所有的节点都执行) 编辑4台服务器的  /etc/hosts  文件 ,添加下面内容(每个节点都执行一遍): 设置hostname(以node1为例): 或者修

    2024年03月22日
    浏览(38)
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群

    这里我们配置一个 单master集群 。( 一个Master节点,多个Node节点 ) 1.硬件环境准备 一台或多台机器,操作系统 CentOS7.x-86_x64 。这里我们使用安装了CentOS7的三台虚拟机 硬件配置 : 2GB或更多RAM , 2个CPU或更多CPU , 硬盘30GB或更多 2.主机名称和IP地址规划 3. 初始化准备工作 (1).关

    2024年02月10日
    浏览(38)
  • K8s(kubernetes)集群搭建及dashboard安装、基础应用部署

    本质是一组服务器集群,在集群每个节点上运行特定的程序,来对节点中的容器进行管理。实现资源管理的自动化。 自我修复 弹性伸缩 服务发现 负载均衡 版本回退 存储编排 控制节点(master)-控制平面 APIserver :资源操作的唯一入口 scheduler :集群资源调度,将Pod调度到node节

    2024年02月08日
    浏览(35)
  • Centos7 安装部署 Kubernetes(k8s) 高可用集群

    宿主机系统 集群角色 服务器IP 主机名称 容器 centos7.6 master 192.168.2.150 ks-m1 docker centos7.6 master 192.168.2.151 ks-n1 docker centos7.6 master 192.168.2.152 ks-n2 docker 1.1 服务器初始化及网络配置 VMware安装Centos7并初始化网络使外部可以访问** 注意事项:请一定要看完上面这篇文章再执行下面的操

    2024年02月03日
    浏览(48)
  • 使用docker 部署k8s集群

    目录 一、环境准备: 二、master节点修改hosts, 配置主机可达 三、将桥接的IPv4流量传递到iptables的链 四、配置 daemon.json,设置cgroup的管理方式为systemd及配置阿里云镜像加速 五、添加yum源 六、安装 kubeadm,kubelet 和 kubectl 七、master部署k8s 八、将kubeadm join 复制到两个node节点执

    2024年02月12日
    浏览(51)
  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)

    上一节讲解了K8s包管理工具Helm、使用Helm部署mongodb集群(主从数据库集群),这里来看看 K8s使用Helm部署mysql集群(主从数据库集群) 无本地存储: 当重启的时候,数据库消失 (1).打开官网的应用中心 打开应用中心,搜索mysql (2).安装  1).添加repo仓库 2).安装 具体命令如下:  3).自动生成

    2024年01月21日
    浏览(45)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、关闭防火墙 2、配置域名解

    2024年02月08日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包