k8s集群搭建

k8s简介

kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制

k8s的资源对象

master

kubernetes里的master指的是集群控制节点,在每个kubernetes集群里都需要有一个master来负责真个集群的管理和控制,在master上运行着以下关键进程:

  • API Server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是kubernetes里所有资源的增删改查等操作的唯一入口,也是集群中的入口进程
  • Controller Manager(kube-controller-manager):kubernetes里所有资源对象的自动化控制中心,可以理解成为资源对象的“大总管”
  • Scheduler:(kube-scheduler):负责资源调度(pod调度)的进程,相当于公交公司的“调度室”
  • Etcd:所有资源对象的数据被会被保存到etcd中,持久化

node

除了master,kubernetes集群中其他机器被称之为 Node,node可以是一台物理机,也可以是一台虚拟机,node是kubernetes集群中的工作负载节点,每个node都会被master分配一些工作负载(docker容器),当某个node宕机时,其他节点会接管故障节点的资源,node节点当中的重要进程:

  • kubelet:负责pod对应容器的创建,启停等任务,另外kubelet与master紧密协作,随时报告给master自身的情况,如CPU,内存,操作系统,docker版本等
  • kube-proxy:实现kubernetes server的通信与负载均衡机制的重要组件
  • docker engine:docker引擎,负责本主机的容器创建 和管理工作

k8s集群架构图

集群的搭建(master)

简单了解k8s的资源对象之后咱们就先来搭建一个k8s集群,因为我们的后续操作都是建立在k8s集群当中的,因此,我们就需要先搭建一个k8s集群,这样也便于大家的理解

环境准备

三台机器:

  • master:192.168.254.13
  • node1:192.168.254.12
  • node2:192.168.254.10
  • 基于主机名通信:/etc/hosts;
  • 时间同步
  • 关闭firewalld,selinux 

第一步:确保master和node中开启内核参数

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
  note:如果提示没有bridge-nf-call-iptables
    解决办法:
       [[email protected] ~]# modprobe br_netfilter 

第二步:配置docker  yum源和kubenetes  yum源并且安装

#安装kubernetes的yum源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 = 1
    gpgkey = https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
#安装docker的yum源
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install kubelet kubeadm kubectl docker-ce -y

第三步:添加初始化额外参数,忽略swap报警信息

[[email protected] ~]# vim /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS="--fail-swap-on=false"
[[email protected] ~]# service docker restart

第四步:初始化集群

[[email protected] ~]# kubeadm init --kubernetes-version=v1.15.2 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap --ignore-preflight-errors=NumCPU --image-repository registry.aliyuncs.com/google_containers
                解释:
                    --apiserver-advertise-address:指定用 Master 的哪个IP地址与 Cluster的其他节点通信。
                    --service-cidr:指定Service网络的范围,即负载均衡VIP使用的IP地址段。
                    --pod-network-cidr:指定Pod网络的范围,即Pod的IP地址段。
                    --image-repository:Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加-image-repository参数,默认值是 k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。
                    --kubernetes-version=v1.13.3:指定要安装的版本号。
                    --ignore-preflight-errors=:忽略运行时的错误,例如上面目前存在[ERROR NumCPU]和[ERROR Swap],忽略这两个报错就是增加--ignore-preflight-errors=NumCPU 和--ignore-preflight-errors=Swap的配置即可。

第五步:记录以下内容,因为后期我们的node节点需要通过ca认证加入到集群当中

kubeadm join 192.168.254.13:6443 --token 71ovlq.w7pf14czrwi7f1ag --discovery-token-ca-cert-hash sha256:d2a9a1aa23fdbcd42711a222c959026073cf0a70f37a87806233d8319c66feb4 

第六步:按照提示完成以下三步

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

第七步:查看节点状态

这里的NotReady是因为咱们还没有部署网络

[[email protected] ~]# kubectl get node
NAME                    STATUS     ROLES    AGE   VERSION
localhost.localdomain   NotReady   master   8h    v1.15.2

第八步:查看组件状态

[[email protected] ~]# kubectl get cs
 NAME                 STATUS    MESSAGE             ERROR
 controller-manager   Healthy   ok
 scheduler            Healthy   ok
 etcd-0               Healthy   {"health":"true"}

第九步:部署flannel网络(github)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

若下载失败可以从阿里云上pull
    [[email protected] ~]# docker pull registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.11.0-amd64
    [[email protected] ~]# docker tag registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
    [[email protected] ~]# docker rmi registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.11.0-amd64

集群的搭建(2个node节点)

对于2个node节点的配置跟master节点的1,2,3步一样,这里就不在写了,直接跳到第四步

第四步:节点加入集群,也就是部署master时候的第五步

[[email protected] ~]#kubeadm join 192.168.254.13:6443 --token wug9gq.m9j7hhmvvy9ag8kk --discovery-token-ca-cert-hash sha256:6f8a056391bf04c3911465c581e78376e1d35eb309641105ddd69ce5eb47c591 --ignore-preflight-errors=Swap

第五步:在master节点上用一下命令查看,以下状态是代表ok

[[email protected] ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   10h   v1.15.3
node1    Ready    <none>   10h   v1.15.3
node2    Ready    <none>   10h   v1.15.3

补充

1.如果发现以上错误说明master节点token失效,需要在master上重新生成
[[email protected] ~]# kubeadm token create --print-join-command

3.如果node机器曾经加入过集群,要重新加入需要kubeadm reset重置,然后在join
[[email protected] ~]# kubeadm reset

4.如果忘掉token
[[email protected]master ~]# kubeadm token list
5.如果忘掉hash串
[[email protected]]openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //‘

原文地址:https://www.cnblogs.com/fengzi7314/p/11456666.html

时间: 2024-08-18 08:33:31

k8s集群搭建的相关文章

K8s集群搭建(kubeadm方案)

K8s集群搭建(kubeadm方案) 1.最少3台CentosA.至少2核CPU+2G内存+20G硬盘B.必须在同一网段本示例中分配为: Master:192.168.20.245 Worker1:192.168.20.167 Worker2:192.168.20.166 2.ip addr确认是否有分配到IPV4地址.没有的话nmtui,Automatically connect打上勾 3.用SSH连接 4.禁用防火墙, systemctl stop firewalld & systemctl

k8s 集群搭建

一,环境介绍   master node1 node2 IP 192.168.0.164 192.168.0.165 192.168.0.167 环境 centos 7 centos 7 centos 7 二,配置安装 三台节点操作实例:" 01,配置yum源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/ku

Kubernetes集群搭建以及部署高可用ingress

k8s服务器 10.10.4.85 master 10.10.4.86 node 10.10.4.87 node 3个服务器都配置好主机名以及hosts配置: k8s集群搭建 在10.10.4.85 上操作,master节点 使用kubeadm工具安装,参考:使用kubeadm安装kubernetes_v1.17.x:https://kuboard.cn/install/install-k8s.htm #curl -sSL https://kuboard.cn/install-script/v1

[k8s]kube-dns/dashboard排错历险记(含sa加载用法/集群搭建)

kube-dns原理 参考: 组件架构看这个就够了 http://cizixs.com/2017/04/11/kubernetes-intro-kube-dns 设置细节看这个就够了 http://blog.fleeto.us/translation/configuring-private-dns-zones-and-upstream-nameservers-kubernetes busybox你的忠实实验伴侣 命令看这里: https://kubernetes.io/docs/concepts

.net core i上 K8S(一)集群搭建

1.前言 以前搭建集群都是使用nginx反向代理,但现在我们有了更好的选择——K8S.我不打算一上来就讲K8S的知识点,因为知识点还是比较多,我打算先从搭建K8S集群讲起,我也是在搭建集群的过程中熟悉了K8S的一些概念,希望对大家有所帮助.K8S集群的搭建难度适中,网上有很多搭建k8s的教程,我搭建的过程中或多或少遇到一些问题,现在就把我总结完的教程给大家总结一下.这里主要讲通过二进制包安装K8S 2.集群组件介绍 节点 ip 组件 master 192.168.8.201 etcd:存储集群节

kubernetes (K8S) 集群的搭建方式

kubernetes (K8S) 集群的搭建方式有两种: 守护进程模式和容器模式 (请注意看图,不一样的) 容器的编排管理工具,当然推荐使用容器来部署了.不过容器镜像是在 Google 云上的,需要各位各显神通了. container部署: systemd模式部署: 原文地址:https://www.cnblogs.com/liuxgcn/p/11154259.html

ubuntu18.04搭建k8s集群

上个月为小组搭建一个k8s的nvidia gpu集群,在此记录一下,以免以后忘记. 本次搭建采用的ubuntu18.04 server ,docker版本采用的19.03.2,k8s版本是1.15.2. name version ubuntu server 18.04 docker 19.03.2 k8s 1.15.2 搭建集群之前需要安装nvidia显卡驱动,这里就不在赘述如何安装驱动. 集群需要设置固定ip,dns,否则容器可能不能访问外网. 通过shell脚本文件自动安装,install.

搭建K8s集群[无需科学shangwang]

官网:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl GitHub:https://github.com/kubernetes/kubeadm 使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点 配置(官方配置要求): - One or more ma

k8s docker集群搭建

?Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是kubernetes 首先,他是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性