安装部署k8s集群

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

系统: CentOS Linux release 7.9.2009 (Core)

  • 准备3台主机
192.168.44.148 k8s-master
92.168.44.154 k8s-worker01
192.168.44.155 k8s-worker02
  • 3台主机准备工作
    关闭防火墙和selinux

      systemctl disable firewalld --now
      setenforce 0
      sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    

    关闭swap分区(swap分区会降低性能,所以选择关闭)
    参考如下链接:

      https://blog.csdn.net/dejunyang/article/details/97972399
    

    设置node的主机名,并配置/etc/hosts(这样可以方面看到pod调度到哪个node上面)
    对应的node配置对应的主机名

      hostnamectl set-hostname k8s-master
      hostnamectl set-hostname k8s-worker01
      hostnamectl set-hostname k8s-worker02
    

    每台node主机都需要执行

      cat >> /etc/hosts << EOF 
      192.168.44.148  k8s-master
      192.168.44.154  k8s-worker01
      192.168.44.155  k8s-worker02
      EOF
    
  • 开始安装k8s

  1. 配置yum源(3台主机都需要操作,使用阿里云yum仓库)

    cat >  /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
            http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
  2. 安装 kuberneters组件(所有节点安装)

    yum -y install kubeadm-1.19.0 kubectl-1.19.0 kubelet-1.19.0 --disableexcludes=kubernetes
    
  • --disableexcludes=Kubernetes 禁掉除了这个kubernetes之外的别的仓库
  • 这里安装的是指定版本,不指定版本默认安装最新版本
  1. kubelet服务,启动并设置开启自启(所有node执行)

    systemctl enable kubelet --now
    
  2. 所有节点安装docker

    yum install -y yum-utils
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum -y install docker-ce-19.03.10-3.el7 docker-ce-cli-19.03.10-3.el7 containerd.io docker-compose-plugin
    

    note: K8s使用的是1.19.0版本,官网推荐docker 版本 19.03

    启动,并自启docker

    systemctl enable docker --now
    

    Docker配置镜像仓库,并修改cgroup驱动为systemd(所有node节点执行)

    Cgroups概念  cgroups 的全称是 Linux Control Groups,主要作用是限制、记录和隔离进程组(process
    groups)使用的物理资源(cpu、memory、IO 等)。

    systemd是系统自带的cgroup管理器, 系统初始化就存在的, 和cgroups联系紧密,为每一个进程分配cgroups,
    用它管理就行了. 如果设置成cgroupfs就存在2个cgroup控制管理器, 实验证明在资源有压力的情况下,会存在不稳定的情况。

    由于 kubeadm 把 kubelet 视为一个系统服务来管理,所以对基于 kubeadm 的安装kubernetes, 我们推荐使用
    systemd 驱动,不推荐 cgroupfs 驱动。

    cat > /etc/docker/daemon.json << EOF
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://l72pvsl6.mirror.aliyuncs.com"],
    "log-opts": {"max-size":"50M","max-file":"3"}
    }
    EOF
    
  • "exec-opts": ["native.cgroupdriver=systemd"] 设置cgroup驱动为systemd
  • "registry-mirrors": ["https://l72pvsl6.mirror.aliyuncs.com"] 设置docker镜像仓库为阿里云镜像
  • "log-opts": {"max-size":"50M","max-file":"3"} 设置docker容器日志最大为50M,最大文件个数为 3
  1. 允许 iptables 检查桥接流量
    若要显式加载此模块,请运行 sudo modprobe br_netfilter 通过运行 lsmod | grep br_netfilter 来验证 br_netfilter 模块是否已加载

     sudo modprobe br_netfilter
     lsmod | grep br_netfilter
    

    为了让 Linux 节点的 iptables 能够正确查看桥接流量,请确认 sysctl 配置中的 net.bridge.bridge-nf-call-iptables 设置为 1。例如:

     cat > /etc/modules-load.d/k8s.conf << EOF
      overlay
      br_netfilter
     EOF
    

     modprobe overlay
     modprobe br_netfilter
    

    设置所需的 sysctl 参数,参数在重新启动后保持不变

     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
     EOF
    

    加载sysctl参数(重启也能生效)

     sysctl --system
    
  2. 修改kubeadm的默认配置

    kubeadm config print init-defaults > init-config.yaml     将kubeadm默认的配置保存在文件中,到时候导入配置文件初始化集群
    

    修改init-config.yaml(只修改几个关键的部分)

    advertiseAddress: 192.168.44.148
    imageRepository: registry.aliyuncs.com/google_containers
    networking:
     dnsDomain: cluster.local
     serviceSubnet: 10.96.0.0/12
     podSubnet: 192.168.0.0/16 
    

    note:

  • advertiseAddress master 与集群通信的ip

  • imageRepository: registry.aliyuncs.com/google_containers 镜像仓库地址

  • networking 下面只添加了 podSubnet: 192.168.0.0/16 这个参数,其他都是默认;待会要修改CNI文件子网范围和这个一致

    查看需要拉取的镜像

    kubeadm config images list --config=init-config.yaml
    

    拉取镜像

    kubeadm config images pull --config=init-config.yaml
    
  1. 运行kubeadm init 命令安装master 节点

    kubeadm init --config=init-config.yaml
    

note: 可以忽略如下信息

W0131 16:57:45.102290 3727 configset.go:348] WARNING: kubeadmcannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]

Your Kubernetes control-plane has initialized successfully! 代表控制平面初始化成功

  1. 为kubectl 配置证书才能访问master
    非root用户配置:

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

    root用户配置:

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
    source /etc/profile
    
  2. 将节点加入到k8s集群

    当然,当集群已经成功初始化完成都,最下方会打印出加入集群的代码:
    kubeadm join 192.168.44.148:6443 --token abcdef.0123456789abcdef
    –discovery-token-ca-cert-hash sha256:88eb2767faaad801ce07501946b510d20bc180fd20cf35c9aa1822b3b345c2ef

    获取加入node节点的token(master节点执行)

    kubeadm token list
    

    获取 --discovery-token-ca-cert-hash 值

    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    

    固定格式是(注意换成自己的token和hash值):

    kubeadm join 192.168.44.148:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:88eb2767faaad801ce07501946b510d20bc180fd20cf35c9aa1822b3b345c2ef
    

    如果token过期了,可以在master节点上运行

    kubeadm token create
    

    打印加入节点的完整命令可以运行

    kubeadm token create --print-join-command
    

    在所有node节点执行 加入集群的token
    根据自己对应的加入集群的token

    kubeadm join 192.168.44.148:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:88eb2767faaad801ce07501946b510d20bc180fd20cf35c9aa1822b3b345c2ef
    

    在master节点使用 kubectl get pod -A 查看所有组件是否安装成功,状态是否Runting(需要等待一会)

    kubectl  get pod -A
    
    	NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
    kube-system   coredns-6d56c8448f-hsm4m             0/1     Pending   0          16m
    kube-system   coredns-6d56c8448f-z66pp             0/1     Pending   0          16m
    kube-system   etcd-k8s-master                      1/1     Running   0          16m
    kube-system   kube-apiserver-k8s-master            1/1     Running   0          16m
    kube-system   kube-controller-manager-k8s-master   1/1     Running   0          16m
    kube-system   kube-proxy-447d7                     1/1     Running   0          119s
    kube-system   kube-proxy-9gt2z                     1/1     Running   0          16m
    kube-system   kube-proxy-s9hbb                     1/1     Running   0          114s
    kube-system   kube-scheduler-k8s-master            1/1     Running   0          16m
    

    在master节点使用查看所有节点信息

    kubectl get nodes
    
    	NAME           STATUS     ROLES    AGE     VERSION
    k8s-master     NotReady   master   17m     v1.19.0
    k8s-worker01   NotReady   <none>   2m48s   v1.19.0
    k8s-worker02   NotReady   <none>   2m43s   v1.19.0
    

    note:Node节点状态显示 NotReady 因为 还没有安装 CNI(容器网络接口)

  3. 安装Calico CNI网络插件(在master节点执行)
    下载资源文件

    curl -O https://docs.tigera.io/archive/v3.18/manifests/calico.yaml
    

    修改一下pod网段
    安装部署k8s集群,k8s学习,k8s

    安装

    kubectl apply -f calico.yaml
    

    等待一会再次查看pod,node详情

    kubectl get nodes,pod -A
    
    	NAME                STATUS   ROLES    AGE   VERSION
    node/k8s-master     Ready    master   36m   v1.19.0
    node/k8s-worker01   Ready    <none>   21m   v1.19.0
    node/k8s-worker02   Ready    <none>   21m   v1.19.0
    
    NAMESPACE     NAME                                           READY   STATUS             RESTARTS   AGE
    kube-system   pod/calico-kube-controllers-56c7cdffc6-frc82   0/1     CrashLoopBackOff   6          13m
    kube-system   pod/calico-node-7rxzn                          1/1     Running            0          13m
    kube-system   pod/calico-node-dbjhv                          1/1     Running            0          13m
    kube-system   pod/calico-node-fsw2d                          1/1     Running            0          13m
    kube-system   pod/coredns-6d56c8448f-hsm4m                   0/1     Running            0          36m
    kube-system   pod/coredns-6d56c8448f-z66pp                   0/1     Running            0          36m
    kube-system   pod/etcd-k8s-master                            1/1     Running            0          36m
    kube-system   pod/kube-apiserver-k8s-master                  1/1     Running            0          36m
    kube-system   pod/kube-controller-manager-k8s-master         1/1     Running            0          36m
    kube-system   pod/kube-proxy-447d7                           1/1     Running            0          21m
    kube-system   pod/kube-proxy-9gt2z                           1/1     Running            0          36m
    kube-system   pod/kube-proxy-s9hbb                           1/1     Running            0          21m
    kube-system   pod/kube-scheduler-k8s-master                  1/1     Running            0          36m
    

    目前来看node节点已经就绪了,但是有一个pod报错,2个pod没有准备好,使用kubectl --namespace=kube-system describe pod pod名称 查看pod的事件

    kubectl --namespace=kube-system describe pod calico-kube-controllers-56c7cdffc6-frc82
    

    报错问题能力有限无法处理,部署基本都是这样。组要是版本差异然后不知道怎么处理!!!
    如果知道是什么原因导致的报错,还请不吝赐教。文章来源地址https://www.toymoban.com/news/detail-826519.html

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

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

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

相关文章

  • K8S集群安装与部署(Linux系统)

    K8S集群安装与部署(Linux系统)

    一、环境说明:CentOS7、三台主机(Master:10.0.0.132、Node1:10.0.0.133、Node2:10.0.0.134) 二、准备环境: 映射 关闭防火墙 三、etcd集群配置 安装etcd(Master) 修改etcd配置文件/etc/etcd/etcd.conf(Master) 安装K8S节点组件、etcd、flannel以及docker(Node1和Node2) 修改etcd配置文件/etc/etcd/et

    2024年02月11日
    浏览(10)
  • 【k8s】基于Prometheus监控Kubernetes集群安装部署

    【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日
    浏览(57)
  • 安装部署rancher2.7.0,然后导入K8S集群,管理集群

    安装部署rancher2.7.0,然后导入K8S集群,管理集群

    centos系统请参考博客 ubuntu系统请参考博客 默认用户是admin 浏览器打开:https://IP:443 回车后就出现了如下图 利用刚才查到的密码登录 登录后直接修改密码,点击继续。 上图就是进入后的默认页面 不同版本调整中文的页面不一样,具体请根据自己的版本可以百度或者去官网查

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

    K8s(kubernetes)集群搭建及dashboard安装、基础应用部署

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

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

    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日
    浏览(34)
  • Amazon Linux2使用kubeadm部署安装K8S集群

    在AWS上启动3台Amazon Linux2的服务器,服务器配置为2vcpu 和2GB内存 1. 修改主机名(可选步骤) 2.导入k8s的yum仓库密钥 3. 配置kubernetes源 4. 部署安装kubeadm、kubectl、docker,并且启动docker 5. 在master节点上执行初始化 具体初始化过程如下 [init] Using Kubernetes version: v1.27.1 [preflight] Runni

    2024年02月06日
    浏览(14)
  • 云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

    云原生|kubernetes|kubernetes集群部署神器kubekey安装部署高可用k8s集群(半离线形式)

    前面利用kubekey部署了一个简单的非高可用,etcd单实例的kubernetes集群,经过研究,发现部署过程可以简化,省去了一部分下载过程(主要是下载kubernetes组件的过程)只是kubernetes版本会固定在1.22.16版本,etcd集群可以部署成生产用的外部集群,并且apiserver等等组件也是高可用,

    2024年02月15日
    浏览(15)
  • 安装部署最新版或者rancher2.7.0,然后导入K8S集群,管理集群

    安装部署最新版或者rancher2.7.0,然后导入K8S集群,管理集群

    centos系统请参考博客 ubuntu系统请参考博客 默认用户是admin 浏览器打开:https://IP:443 回车后就出现了如下图 利用刚才查到的密码登录 登录后直接修改密码,点击继续。 上图就是进入后的默认页面 不同版本调整中文的页面不一样,具体请根据自己的版本可以百度或者去官网查

    2024年02月08日
    浏览(13)
  • Rancher部署k8s集群测试安装nginx(节点重新初始化方法,亲测)

    Rancher部署k8s集群测试安装nginx(节点重新初始化方法,亲测)

    一、安装前准备工作 计算机 机器名 IP地址 部署内容 rancher 172.16.5.221 rancher k8smaster 172.16.5.222 Control Plane, Etcd k8sworker01 172.16.5.223 worker k8sworker02 172.16.5.224 worker k8sworker03 172.16.5.225 worker 需在每个节点都进行操作,可以使用xshell工具分屏进行批量操作。 升级linux内核 时间同步 Hos

    2024年01月20日
    浏览(15)
  • m1使用VMware安装CentOS7并部署k8s高可用集群

    m1使用VMware安装CentOS7并部署k8s高可用集群

    项目 版本 处理器 Apple M1 Max 操作系统 macOS Ventura 13.0 虚拟机应用 VMware Fusion 专业版 12.2.3 虚拟机操作系统 CentOS Linux 7 (AltArch) 容器运行时版本 docker 1.13.1 集群版本 Kubernetes 1.21.0 2.1 安装 VMware 安装包下载地址:VMware Fusion 专业版 12.2.3 应用许可证问题请自行解决 2.2 安装虚拟机 2.

    2024年02月02日
    浏览(14)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包