天天看點

k8s叢集搭建(kubeadm)

kubeadm 是官方社群推出的一個用于快速部署 kubernetes 叢集的工具,這個工具能通過兩條指令完成一個 kubernetes 叢集的部署:

  1. 建立一個Master節點 kubeadm init
  2. 将Node節點加入到目前叢集中 $ kubeadm join <Master 節點的IP和端口>

環境準備:

      伺服器三台(虛拟機,192.168.228.10/11/12,2C/2G,centos7.5)

系統配置:

  1. 關閉防火牆
    # 臨時關閉防火牆
    systemctl stop firewalld
    # 永久關閉防火牆
    systemctl disable firewalld
               
  2. 關閉selinux
    # 臨時關閉selinux
    setenforce 0
    # 永久關閉selinux
    sed -i 's/enforcing/disabled/' /etc/selinux/config
               
  3. 關閉swap
    # 臨時關閉swap
    swapoff -a
    # 永久關閉
    # 注釋/etc/fstab檔案中swap配置
    /dev/mapper/centos-root /                       xfs     defaults        0 0
    UUID=44db6c96-374e-4fca-badb-bbcf4adc1f9d /boot                   xfs     defaults        0 0
    #/dev/mapper/centos-swap swap                    swap    defaults        0 0
    
    echo vm.swappiness=0 >> /etc/sysctl.conf
    
    # 重新開機
    reboot
               
  4. 設定主機名
    # 192.168.228.10
    hostnamectl set-hostname master
    # 192.168.228.11
    hostnamectl set-hostname slave1
    # 192.168.228.12
    hostnamectl set-hostname slave2
               
  5. 配置hosts
    cat >> /etc/hosts << EOF 
    192.168.228.10 master 
    192.168.228.11 slave2 
    192.168.228.12 slave2 
    EOF
               
  6. 将橋接的IPv4流量傳遞到iptables的鍊
    cat > /etc/sysctl.d/k8s.conf << EOF 
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1 
    EOF
               
  7. 配置時間同步
    timedatectl set-timezone Asia/Shanghai
    yum install ntpdate -y
    ntpdate time.windows.com
               

所有節點安裝Docker/kubeadm/kubelet

  1. 安裝docker
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    
    yum -y install docker-ce-18.06.1.ce-3.el7
    
    systemctl enable docker && systemctl start docker
    
    docker --version
               
  2. 添加阿裡雲yum軟體源
    # 設定倉庫位址
    cat > /etc/docker/daemon.json << EOF 
    { 
    	"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] 
    }
    EOF
    
    # 添加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=0 
    repo_gpgcheck=0 
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
    https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
    EOF
    
               
  3. 安裝kubeadm、kubelet、kubectl
    yum install -y kubelet kubeadm kubectl 
    
    systemctl enable kubelet
               
  4. 克隆slave1、slave2

    略(更改網絡ip、主機名)

部署 Kubernetes Master

  1. 在master(192.168.228.10)執行
    kubeadm init --apiserver-advertise-address=192.168.228.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.0  --service-cidr=10.96.0.0/12  --pod-network-cidr=10.244.0.0/16
               
  2. 使用 kubectl 工具
    mkdir -p $HOME/.kube 
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    # 檢視節點資訊
    kubectl get nodes
               
  3. 安裝pod網絡插件(CNI)
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
               

加入kubernetes Node

  1. 在192.168.228.11、192.168.228.12上執行(之前執行kubeadm init 輸出的最後一段指令)
    kubeadm join 192.168.228.10:6443 --token qbdetu.33vjzp8v66ohubhp \
        --discovery-token-ca-cert-hash sha256:910add3987188a8fd61ba0aef75623c9b0b4732860cfd834605769529500271d 
               

測試kubernetes叢集

kubectl create deployment nginx --image=nginx 
kubectl expose deployment nginx --port=80 --type=NodePort 
kubectl get pod,svc
           
k8s叢集搭建(kubeadm)

 這時候通路192.168.228.11:32160 / 192.168.228.12:32160,可以看到大家熟知的頁面:Welcome to nginx!