k8s集群部署


k8s集群部署的幾種方式

1、Rancher方式:
        二次封裝的常用發行版【可視化構建kubernetes】
2、minikube方式:
    Minikube是一個工具,可以在本地快速運行一個單點的Kubernetes,適合嘗試Kubernetes或日常開發的用戶使用,但是不能用於生產環境。
3、kubeadm方式:
    Kubeadm也是一個工具,提供kubeadm init和kubeadm join,可用於快速部署Kubernetes集群。
4、二進制包方式:
    從官方下載發行版的二進制包,手動部署每個組件,組成Kubernetes集群,過程較為繁瑣。

    官方資料:https://feisky.gitbooks.io/kubernetes/components/kubeadm.html
    [Kubernetes] 國內獲取 Kubernetes 鏡像的方法
    https://blog.csdn.net/shida_csdn/article/details/78480241
    https://www.cnblogs.com/fengzhihai/p/9849683.html


本例采用bukeadm安裝:

安裝要求:

1、centos7.X(1台master、2台node)
2、2G、2C、30GB
3、集群之間網絡互通
4、可以訪問外網,需要拉去鏡像

 

部署步驟:

1、關閉防火牆
      systemctl stop firewalld

      systemctl disable firewalld

2、關閉selinux

  setenforce 0(臨時生效)

       vi /etc/selinux/config   SELINUX值更改為disabled

3、禁止swap分區:swap分區的作用是當物理內存不足時,利用swap分區做數據交換,但是在kubernetes中完全不支持swap分區,所以必須禁止掉,

      或者創建 系統的時候就不創建他

     swapoff -a (臨時關閉)

     vi /etc/fstab(永久生效)   中注釋掉swap那行:/dev/mapper/centos-swap swap 

4、添加主機名和IP的關系,作為解析使用

      vi /etc/hosts 最后添加

      ip1    主機名1
  ip2    主機名2
  ip3    主機名3

5、如果虛擬機無需此操作,時間同步【啟動chronyd系統服務】
  systemctl  start  chronyd.service
  systemctl  enable  chronyd.service

6、將橋接的IPv4流量傳遞到iptables的鏈【有一些ipv4的流量不能走iptables鏈【linux內核的一個過濾器,每個流量都會經過他,然后再匹配是否可進入當前應用進程去處理】,導致流量丟失】

     配置k8s.conf文件(#k8s.conf文件原來不存在,需要自己創建的)

    或者直接vi /etc/sysctl.d/k8s.conf   最后添加如下3行

    net.bridge.bridge-nf-call-ip6tables=1
     net.bridge.bridge-nf-call-iptables=1
     vm.swappiness=0

     添加完畢后執行sysctl --system生效

 

安裝Docker、kubeadm(引導集群的客戶端工具)、kubelet(k8s中管理容器)

1、安裝Docker(兩種下載repo文件方法)

     A:打開 https://mirrors.aliyun.com/docker-ce/linux/centos/

         找到docker-ce-repo然后復制鏈接下載后將repo文件放到/etc/yum.repos.d目錄下

    B:先cd /etc/yum.repos.d

          然后wget  https://mirrors.aliyun.com/docker-ce/linux/centos/ 直接下載

     安裝:yum -y install docker-ce-18.06.1.ce-3.el7
     設置開機啟動並啟動docker:systemctl enable docker && systemctl start docker

2、安裝kubeadm 、kubelet、kubectl

    首先配置kubermetes的阿里yum軟件源:

    在/etc/yum.repos.d目錄下vim 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
安裝:

yum install -y kubelet-1.13.3
yum install -y kubeadm-1.13.3
yum install -y kubectl-1.13.3

“以上步驟所有機器都要配置和安裝”

 

部署(初始化)k8s Master節點

kubeadm init \
--apiserver-advertise-address 192.168.88.149 \  (此處為APIserver服務器地址)
--image-repository registry.aliyuncs.com/google_containers \ (系統默認去k8s.gcr.io要改成這個地址不然下不到鏡像)
--kubernetes-version=v1.13.3 \   (k8s版本 rpm -qa kubeadm查看)
--pod-network-cidr=10.244.0.0/16  (此處10.244.0.0/16為pod網段使用的是flannel,service網絡使用默認)

注:此處需要下載鏡像比較慢,耐心等待(可以通過kubeadm config images pull 查看需要下載哪些鏡像)

初始化完畢之后需要執行下面步驟:

1、如下為初始化提供的信息,但是root用戶只要在/root家目錄下mkdir .kube,

     然后在cp /etc/kubernetes/admin.conf /root/.kube/config下,然后查看獲取情況kubectl get node

     注:只要有admin.conf就可以查看node狀態

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

2、Master初始化完畢后最下面這個必須記錄下來,后面node服務器加入需要用到

You can now join any number of machines by running the following on each node
as root:
kubeadm join 192.168.88.149:6443 --token qlzhpw.fy30lar1jiz11xbw --discovery-token-ca-cert-hash sha256:ed2f22c8a4727f7be52a1495b49e52638e1f79107677daf6722dfa009218f2e

安裝Pod網絡插件(所有服務器都需要安裝)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

查看狀況

kubectl get pods -n kube-system(kube-system為默認的namespace)

kubectl get node 

Node服務器加入網絡(Node服務器需要執行,就是上面Master初始化結束復制下來的內容)

kubeadm join 192.168.88.149:6443 --token qlzhpw.fy30lar1jiz11xbw --discovery-token-ca-cert-hash sha256:ed2f22c8a4727f7be52a1495b49e52638e1f79107677daf6722dfa009218f2e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM