`

Kubernetes 安装

    博客分类:
  • k8s
 
阅读更多

部署目标

  • 在所有节点上安装Docker和kubeadm,kubelet
  • 部署容器网络插件flannel

部署架构

ip 域名 备注 安装软件
192.168.99.101 master 主节点 Docker Kubeadm kubelet kubectl flannel
192.168.99.102 node1 从节点 1 Docker Kubeadm kubelet kubectl flannel
192.168.99.103 node2 从节点 2 Docker Kubeadm kubelet kubectl flannel

环境准备

  • 3台虚拟机CentOS7.x-86_x64
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止swap分区

安装基础软件

  • 配置 Master 和 work 节点的域名
    vi /etc/hosts
  •  192.168.99.101 master
     192.168.99.102 node1
     192.168.99.103 node2 
  • CPU 设置为 2 核
  • 下载阿里云的yum源repo文件:
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
     
  • 安装基本软件包
    yum install wget net-tools ntp git ‐y
    
     
  • 同步系统时间
    ntpdate 0.asia.pool.ntp.org
    
     
  • 配置Docker, K8S的阿里云yum源
    cat >>/etc/yum.repos.d/kubernetes.repo <<EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    
     
  • 确保 br_netfilter 模块被加载。
    通过运行 lsmod | grep br_netfilter 来确认br_netfilter已经加载。若要加载该模块,可执行 sudo modprobe br_netfilter。
  • 将桥接的IPv4流量传递到iptables
    为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。执行:
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
     
  • 写入配置:
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system
    
     
  • 关闭 防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
     
  • 关闭 SeLinux
    setenforce 0
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    
     
  • 关闭 swap
    swapoff -a
    yes | cp /etc/fstab /etc/fstab_bak
    
    
     vi /etc/fstab #注释下面这一行
    #/dev/mapper/centos-swap swap                    swap    defaults        0 0 

    Master节点安装 kubeadm, kubelet and kubectl

    • 首先确保虚拟机的 CPU 为 2 核(Kubeadm init 要求 2 核)
    • 修改docker配置文件,使用 systemd 作为 cgroup 的驱动(Kubeadm init 推荐)
      mkdir /etc/docker
      
       
      cat > /etc/docker/daemon.json <<EOF
      {
        "exec-opts": ["native.cgroupdriver=systemd"],
        "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
      }
      EOF
      
       
      # Restart Docker
      
      systemctl daemon-reload
      systemctl restart docker
      systemctl enable docker
      
       
    • 安装kubelet、kubeadm、kubectl
      yum install -y kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3
      
  • 制作虚拟机 Snapshot
    Clone 当前虚拟机,后续 worker node 的初始化可以基于这个 snapshot进行安装。

  • 配置系统自动启动 kubelet

    systemctl enable kubelet  

     

    请使用 root账号在 Master 节点上安装,work node 也需要使用 root 账号。

    • 设置主机名,管理节点设置主机名为master
      hostnamectl set-hostname master
      
       
    • 初始化主节点
      kubeadm init --kubernetes-version=1.19.2 \
      --apiserver-advertise-address=192.168.99.101 \
      --image-repository registry.aliyuncs.com/google_containers \
      --service-cidr=10.1.0.0/16 \
      --pod-network-cidr=10.244.0.0/16
      
       此时会等待镜像拉取,网络 5M 的情况下 1 分钟能完成。
    • 执行以下命令
    • mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      
       
    • 配置KUBECONFIG 环境变量
      echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
      
       
    • 安装网络插件 Flannel(只需要在 Master 安装 flannel)
      可以使用课程代码库的文件:
    • git clone https://git.imooc.com/coding-464/kubeblog.git
      kubectl apply -f kubeblog/docs/Chapter4/flannel.yaml
      ifconfig |grep flan
      [root@localhost ~]# kubectl get node
      kubectl get pod -n kube-system
       
      新建一个 worker node 虚拟机,按照之前安装 Master 节点的步骤,安装 kubeadm,kubectl, kubelet
      在 kubectl get node 显示 master 节点 ready 之后,执行 kubeadm join 命令(上一小节保持的命令),或者 kubeadm token create 命令,在执行 Kubeadm join。
      重新生成新的token,在master端执行
      kubeadm token create --print-join-command
      kubeadm join 192.168.99.101:6443 --token mpukvb.xbo0ejl71yp44k5h     --discovery-token-ca-cert-hash sha256:39b7001fcbddacdee7e104e7d77c3f0b0f39436cc254c1c6d3cf9644f4842641

     

      • Kubernetes 集群启动问题,用journalctl查看日志
        systemctl status kubelet
        journalctl -xefu kubelet
        journalctl -u kube-apiserver
        
        
         
      • 用kubectl 查看日志

    注意:使用Kubelet describe 查看日志,一定要注意是否应包含命名空间

    kubectl describe pod kubernetes-dashboard-849cd79b75-s2snt --namespace kube-system
    
    kubectl logs -f pods/monitoring-influxdb-fc8f8d5cd-dbs7d -n kube-system
    
    kubectl logs --tail 200 -f podname -n jenkins
    
     

     

    • 部署 dashboard:
      kubectl apply -f docs/Chapter4/kubernetes-dashboard.yaml
      
       
    • 查看pod,svc状态:
      kubectl get pod,svc -n kubernetes-dashboard 
    • 非安全的浏览器访问
      通过chrome浏览器访问https://192.168.99.102:31111, 此时会返回”Your connection is not private“,无法跳转页面到 Dashboard,这是由于 chrome 的安全设置,解决办法:鼠标点击当前页面,直接键盘输入‘thisisunsafe’,然后回车,即可进行页面跳转至 Dashboard登录页
    • 获取登录 token
      kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
      
       
    •  
分享到:
评论

相关推荐

    k8s教程:Kubernetes 安装部署教程+编程知识+技术开发

    k8s安装部署,k8s教程:Kubernetes 安装部署教程+编程知识+技术开发; k8s安装部署,k8s教程:Kubernetes 安装部署教程+编程知识+技术开发; k8s安装部署,k8s教程:Kubernetes 安装部署教程+编程知识+技术开发; k8...

    Kubernetes安装手册(非高可用版).md

    适合新手部署实验

    kubernetes安装脚本

    【Kubernetes安装脚本】 Kubernetes(简称K8s)是一种流行的开源容器编排系统,用于自动化容器化应用的部署、扩展和管理。它提供了一种高效、灵活的方式来管理跨多个主机的容器化应用程序。在CentOS 7操作系统上...

    kubernetes安装手册.txt

    一步一步安装kubernetes, 步骤比较详细, 适合新手

    基于CentOS 7的Kubernetes安装全过程(含附件)

    基于CentOS 7的Kubernetes安装全过程(含附件) 目录如下: 第一部分:Nginx on Kubernetes应用部署 3 一、环境准备 3 1.1软硬件环境 3 1.2 网络拓扑 4 二、Kubenetes及相关组件部署 6 2.1 Docker容器及私有仓库部署...

    Kubernetes安装.docx

    Kubernetes安装 Kubernetes是一种开源的容器编排系统,它可以自动化部署、扩展和管理容器ized应用程序。Kubernetes提供了一个高度灵活和可扩展的平台,使得开发者可以快速构建、部署和管理复杂的应用程序。 ...

    kubernetes安装.md

    ### Kubernetes离线集群二进制安装知识点解析 #### 一、环境准备与基础软件安装 在搭建Kubernetes(K8s)集群之前,首先需要确保所有节点的基础环境一致且已安装必要的工具。 **安装基础工具:** ```bash yum ...

    kubernetes安装部署文档

    这个文档是学习和实践Kubernetes安装部署的重要参考资料,务必仔细阅读和实践其中的教程。 总的来说,Kubernetes提供了一种强大且灵活的方式来管理容器化应用,但其安装和部署过程可能较为复杂,需要一定的学习和...

    kubernetes安装部署手册

    在了解了以上关于Kubernetes安装部署手册的知识点后,我们可以清楚地看到Kubernetes在容器化技术领域的影响力和其强大的功能。通过这份手册,运维人员和开发者可以学习到如何有效地部署、管理、扩展和维护Kubernetes...

    kubernetes安装相关包

    在“kubernetes安装相关包”中,"pkg"可能指的是安装过程中的软件包或者源代码包。这些包通常包括上述组件的二进制文件、配置文件、依赖库等。安装Kubernetes涉及的步骤可能包括以下部分: 1. **环境准备**:确保...

    Kubernetes指南+Kubernetes安装全流程,让你彻底学会Kubernetes

    Kubernetes指南+Kubernetes安装全流程,让你彻底学会Kubernetes

    Kubernetes安装

    【Kubernetes 安装详解】 在深入探讨Kubernetes(简称k8s)的安装之前,首先需要理解Kubernetes的核心组件及其作用。Kubernetes是目前最流行的容器编排平台,它提供了一个可扩展的开放平台来自动化应用部署、扩展...

    通过kubernetes安装redmine

    此文介绍通过kubernetes安装redmine。 详细介绍请参考博客文章:https://mp.csdn.net/postedit/82082134 此文档为excel格式,保护操作步骤的大部分截图,方便学习。 主要包括以下内容: 从github取得redmine的yaml...

    kubernetes安装部署

    - **Kubernetes**的名字来自希腊语,意思是“舵手” 或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写。 - K8S的创造者,是众人皆知的行业巨头——**Google**。 - 然而K8S并不是一件全新的发明。它的...

    Kubernetes 安装所需软件.zip.001

    k8s集群软件包,版本是v1.15.1

    Kubernetes安装部署.docx

    Kubernetes安装部署.docx

    云计算Kubernetes安装程序ARM64版本v1.25.15

    kubernetes 安装程序 arm64 架构 Kubernetes版本 v1.25.15 不包含kube容器镜像,仅安装工具和附属配套工具链 包含以下工具: apiextensions-apiserver kube-aggregator kube-apiserver kube-controller-manager kube-...

    kubernetes安装配置详解

    kubernetes安装配置详解,docker配置,路由配置,k8s的监控实例配置以及nginx实例配置等等。下载app注册免费获取:http://m3w.cn/jcsh

    Go-RancherKubernetesEngine一个非常简单快如闪电的Kubernetes安装程序

    Rancher Labs推出的Rancher RKE是一款基于Go语言开发的开源工具,它的设计目标是提供一个轻量级、安全且易于使用的Kubernetes安装程序。RKE的亮点在于其极简的命令行界面,使得用户只需几行命令,即可完成Kubernetes...

Global site tag (gtag.js) - Google Analytics