zoukankan      html  css  js  c++  java
  • k8s之使用Kubeadm部署k8s集群

    一、安装docker

    centos

    #安装一些依赖包
       yum install -y yum-utils device-mapper-persistent-data lvm2
       yum -y install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm &> /dev/null
    
    #添加源信息
        cat > /etc/yum.repos.d/docker.repo <<EOF
    [docker]
    name=docker
    gpgcheck=0
    baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
    EOF
    
    #更新安装docker-ce
        yum clean all  
        yum -y install docker-ce
     
    #配置镜像加速器
         mkdir -p /etc/docker
        cat > /etc/docker/daemon.json <<EOF
    {
         "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
    } 
    EOF
    #启动docker
      systemctl enable --now docker

    ubuntu

    #更新软件包及安装依赖包
        apt-get update
        apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    
    #安装GPG证书
        curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    #写入软件源信息
        echo 'deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable' >> /etc/apt/sources.list
    #更新源信息
        apt -y update
    
    #配置镜像加速器
        mkdir -p /etc/docker
        cat > /etc/docker/daemon.json <<EOF
    {
         "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
    }
    EOF
    
    #安装docker
        apt-get -y install docker-ce

    二、利用阿里云配置源文件和安装k8s

    要点:每个节点都要部署docker,kubelet,kubeadm,kubectl

    Debian / Ubuntu

    #配置源
    apt-get update && apt-get install -y apt-transport-https
    curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF  
    #安装
    apt-get update
    apt-get install -y kubelet kubeadm kubectl

    CentOS / RHEL / Fedora

    #配置yum源
    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=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
    #设置selinux
    setenforce 0
    #安装
    yum install -y kubelet kubeadm kubectl
    systemctl enable kubelet && systemctl start kubelet

    三、启动前准备

    1.关闭防火墙

      systemctl stop firewalld.service

    2.关闭selinux(ubuntu无需做此步)

      setenforce 0

    3.关闭交换分区

      swapoff -a(临时)

      永久关闭:vim /etc/fstab(将与交换分区相关的行注释掉)

    四、配置k8s

    1、初始化master,生成控制平台

    kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --control-plane-endpoint 10.0.0.48 --apiserver-bind-port=6443 --apiserver-advertise-address 10.0.0.48 --pod-network-cidr 10.244.0.0/16
    
    --image-repository    #设置一个镜像仓库,默认为k8s.gcr.io
    --kubernetes-version    #指定安装k8s版本,默认为stable-1
    --control-plane-endpoint    #为控制平台指定一个稳定的IP地址或DNS名称,即配置一个可以长期使用切是高可用的VIP或者域名,k8s 多master高可用基于此参数实现
    --apiserver-bind-port      #API Server绑定的端口,默认为6443
    --apiserver-advertise-address   #K8S API Server将要监听的监听的本机IP
    --pod-network-cidr    #设置pod ip地址范围

    2、配置kube-config文件和网络组件

    #配置config文件
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    #配置网络组件
    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    
    #查看flannel容器是否运行
    kubectl get pods -n kube-system

    3、添加worker节点到K8S集群

    #在worker节点上执行,初始化生成的token默认只有24小时,如需长期有效,可在初始化时指定参数(--token-ttl #指定token过期时间,默认为24小时,0为永不过期)
    kubeadm join kubeapi.magedu.com:6443 --token auxv3l.rz0fvcne1w8fpi5c 
        --discovery-token-ca-cert-hash sha256:70dde5dd65aa1c7cdfd4a6ccf30f682da7ac2077134c177b83f39c58476e6f59
    
    #查看容器运行的节点
    kubectl get nodes -o wide

    4、创建service及配置pod数

    #在k8s上运行容器
    kubectl create deployment demoapp --image="ikubernetes/demoapp:v1.0"
    
    #控制平台上配置pods个数
    kubectl scale deployment demoapp --replicas=3 (deployment要和前面运行容器的名字一样)
    
    #删除Pod
    kubectl delete pods +pod名称
    kubectl delete pods demoapp-59bb775755-5sn4q
    
    #创建service
    kubectl create service clusterip +容器名称 +协议及端口
    kubectl create service clusterip demoapp --tcp=80:80
    
    #查看创建的service
    kubectl get service

    5、故障排错

    1、linux主机名不能有下划线_,否则无法部署
    
    2、The connection to the server apiserver.k8s:6443 was refused - did you specify the right host or port
    #检查docker服务是否启动
    
    3、节点加入时出现以下:
    [ERP0R FileContent--proc-sys-net-bridge-bridge-nf-call-iptables] : /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
    #一般此项docker会自动设置,如未设置,则自己手动设置
    vim /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables = 1
    #生效
    sysctl -p /etc/sysctl.d/k8s.conf
  • 相关阅读:
    ASP.NET常见安全缺陷集锦[转]
    林黛玉出家:给予中国给予我们的警示![摘]
    关于管理 关于经营 还有很多东西都无从做好
    ASP.NET 2.0的新增服务、控件与功能
    将可视的DataGrid、DataList等的规范表数据导出并写入xls或doc格式保存
    2006全球最具影响力品牌
    .NET环境下水晶报表使用总结[转]
    Asp.net(C#)分层——基础类
    Asp.Net传参方式小结
    MSN签名都成了广告位
  • 原文地址:https://www.cnblogs.com/nj-duzi/p/14067171.html
Copyright © 2011-2022 走看看