zoukankan      html  css  js  c++  java
  • Kubernetes系列(三)

    1. Kubeadm简介

    kubeadm是k8s官方提供的,用于新入门人员快速部署一套kubernetes集群的一种简单的方法

    点击进入官方文档链接

    2. 本次操作的机器配置

    • 两台1核2G的阿里云
      • centos 7.6
      • 内网互通

    配置远低于官方的要求,但是用于学习用途足矣

    3. 部署步骤

    • 以下不做特殊说明默认所有机子都执行

    3.1 准备工作

    # 更新系统和软件包
    yum update
    
    # 设置主机名(master node 名字分开)
    hostnamectl set-hostname k8s-master
    
    # 同步时间
    systemctl restart chronyd
    
    # 添加host
    # 以下ip是两台机子的内网ip
    cat >> /etc/hosts <<EOF
    172.19.227.80 k8s-master
    172.19.138.68 k8s-node01
    EOF
    
    # 设置两台机子间无密码访问
    ssh-keygen -t rsa
    ssh-copy-id root@k8s-master
    ssh-copy-id root@k8s-node01
    
    # 关闭防火墙和iptables
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl stop iptables.service
    systemctl disable iptables.service
    
    # 关闭SELinux
    setenforce 0
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    
    # 关闭swap
    swapoff -a
    sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab 
    

    3.2 安装docker

    # master执行以下转到repo目录
    cd /etc/yum.repos.d/
    
    # master执行下载docker阿里云镜像
    wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    # master同步到其他服务器
    scp docker-ce.repo k8s-node01:/etc/yum.repos.d/
    
    # 安装docker(各个都要装)
    yum -y install docker-ce
    
    # 修改配置
    nano /usr/lib/systemd/system/docker.service
    
    # master增加一行如下
    ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
    
    # 配置阿里云镜像加速
    sudo mkdir -p /etc/docker
    
    # 注意这里的链接要换成自己账号的镜像加速
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
    }
    EOF
    
    # 重启docker
    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker
    systemctl restart docker
    
    

    3.3 安装kubeadm, kubectl, kubelet

    # master执行以下
    cd /etc/yum.repos.d/
    nano kubernetes.repo
    
    # 添加如下内容
    [kubernetes]
    name=Kubernetes	Repository
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    
    # master检查仓库
    yum repolist
    yum list all | grep "^kube"
    
    # master执行安装
    yum install kubeadm kubelet kubectl -y
    
    # 检查安装
    rpm -ql kubectl 
    rpm -ql kubeadm
    
    # master上把仓库拷贝过去
    cd /etc/yum.repos.d/
    scp kubernetes.repo k8s-node01:/etc/yum.repos.d/
    
    # 所有node安装kubelet kubeadm
    yum install kubelet kubeadm -y
    
    # master和node执行以下
    systemctl enable kubelet.service
    
    # master查看所需的镜像
    kubeadm config images list
    
    # 所有机器都执行以下的拉取镜像的操作
    # 由于kubeadm依赖国外的k8s.gcr.io的镜像,国内被墙所以这边的解决方案是下载国内的镜像重新打tag的方式
    docker pull lzw5399/kube-proxy:v1.18.3
    docker pull lzw5399/kube-apiserver:v1.18.3
    docker pull lzw5399/kube-controller-manager:v1.18.3
    docker pull lzw5399/kube-scheduler:v1.18.3
    docker pull lzw5399/coredns:1.6.7
    docker pull lzw5399/etcd:3.4.3-0
    docker pull lzw5399/pause:3.2
    
    # 修改tag
    docker tag lzw5399/kube-proxy:v1.18.3 k8s.gcr.io/kube-proxy:v1.18.3
    docker tag lzw5399/kube-apiserver:v1.18.3 k8s.gcr.io/kube-apiserver:v1.18.3
    docker tag lzw5399/kube-controller-manager:v1.18.3 k8s.gcr.io/kube-controller-manager:v1.18.3
    docker tag lzw5399/kube-scheduler:v1.18.3 k8s.gcr.io/kube-scheduler:v1.18.3
    docker tag lzw5399/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
    docker tag lzw5399/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
    docker tag lzw5399/pause:3.2 k8s.gcr.io/pause:3.2
    
    # 移除没用的镜像
    docker rmi lzw5399/kube-proxy:v1.18.3
    docker rmi lzw5399/kube-apiserver:v1.18.3
    docker rmi lzw5399/kube-controller-manager:v1.18.3
    docker rmi lzw5399/kube-scheduler:v1.18.3
    docker rmi lzw5399/coredns:1.6.7
    docker rmi lzw5399/etcd:3.4.3-0
    docker rmi lzw5399/pause:3.2
    

    3.4 master初始化kubeadm

    # master执行init初始化
    kubeadm init 
    --kubernetes-version="v1.18.3" 
    --pod-network-cidr="10.244.0.0/16" 
    --ignore-preflight-errors="NumCPU"
    
    # 后续步骤
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    # 应用网络插件flannle
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    3.5 node加入集群

    # 加入集群
    # 这里具体的语句在master上init成功后就会通过log打印出来,直接复制到node上用就好了
    kubeadm join 172.19.227.80:6443 --token vdyayi.ghs1zut7yxd94vru 
        --discovery-token-ca-cert-hash sha256:fcdaaaf7411b786e3d5bb77c1d190e278a2952e1f415012cfdeea31c0af7547b 
        --v=4
    

    3.6 查看部署状态

    # master查看node节点状态
    kubectl get nodes
    
    # master查看kube-system命名空间下的pod启动的状态
    kubectl get po -n kube-system
    
    # 如果有pod一直启动不起来,通过describe查看状态
    kubectl describe po/{具体的pod名字} -n kube-system
    
  • 相关阅读:
    Mac下安装cscope和ctags
    MAC的VIMRC
    我的Linux系统的VIMRC
    关于在VI中查看BIN文件二进制值不对的问题
    没有关心过编写代码方式的好处,你是不是也是这样?
    四十不惑,真的不惑了么?
    jQuery通过text值来设置选定,以及遍历select的选项个数和遍历
    C#解析XML文件
    网页调用本地程序(Windows下浏览器全兼容)
    C#获取文件的md5
  • 原文地址:https://www.cnblogs.com/baoshu/p/13081930.html
Copyright © 2011-2022 走看看