k8s學習筆記之二:使用kubeadm安裝k8s集群


一、集群環境信息及安裝前准備

部署前操作(集群內所有主機):

1.關閉防火牆,關閉selinux(生產環境按需關閉或打開) 2.同步服務器時間,選擇公網ntpd服務器或者自建ntpd服務器 3.關閉swap分區 4.集群所有節點主機可以相互解析 5.master對node節點ssh互信
6.配置系統內核參數使流過網橋的流量也進入iptables/netfilter框架(如果報錯,提示沒有文件  modprobe br_netfilter 添加此模塊)
echo -e 'net.bridge.bridge-nf-call-iptables = 1 \nnet.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf && sysctl -p

#kubeadm預檢需求見此鏈接https://github.com/kubernetes/kubeadm/tree/master/docs/design

二、配置yum源及k8s相關軟件包下載(所有節點相同操作)

1.配置yum、epel、k8s及docker源

[root@k8s-master ~]# cd /etc/yum.repos.d [root@k8s-master yum.repos.d]# yum install wget -y [root@k8s-master yum.repos.d]# rm -f CentOS-* [root@k8s-master yum.repos.d]#wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo 
[root@k8s-master yum.repos.d]#wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo 
[root@k8s-master yum.repos.d]#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=0 EOF [root@k8s-master yum.repos.d]#wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[root@k8s-master yum.repos.d]#rpm -import rpm-package-key.gpg #安裝key文件 [root@k8s-master yum.repos.d]#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@k8s-master yum.repos.d]#yum clean all  && yum makecache fast

2.安裝kubeadm和相關工具包

[root@k8s-master ~]# cd [root@k8s-master ~]# yum install docker  kubectl-1.10.0 kubeadm-1.10.0      kubelet-1.10.0 kubernetes-cni-0.6.0  -y #需要制定版本,默認是最新的,由於不可描述的原因,暫時最新的還無法下載

3.由於有些不可描述的原因,我們無法去Google直接下載相關鏡像,所以配置使用阿里雲上的鏡像,為了提高下載速度,需要配置阿里雲的加速器

 登錄 https://cr.console.aliyun.com/ 阿里雲(如果沒有請先注冊)

 

點擊鏡像加速器,並根據操作系統選擇對應的操作文檔即可

啟動相關服務並設置開機自啟

[root@k8s-master ~]# systemctl daemon-reload [root@k8s-master ~]# systemctl enable docker && systemctl restart docker [root@k8s-master ~]# systemctl enable kubelet && systemctl restart kubelet

4.下載K8S相關鏡像

[root@k8s-master ~]# cat down_k8s.sh #!/bin/bash images=(kube-proxy-amd64:v1.10.0 kube-scheduler-amd64:v1.10.0 kube-controller-manager-amd64:v1.10.0 kube-apiserver-amd64:v1.10.0 etcd-amd64:3.1.12 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube-dns-amd64:1.14.8 k8s-dns-dnsmasq-nanny-amd64:1.14.8) for imageName in ${images[@]} ; do docker pull keveon/$imageName docker tag keveon/$imageName k8s.gcr.io/$imageName docker rmi keveon/$imageName done [root@k8s-master ~]# sh down_k8s.sh

 1.12版本下載腳本:

#!/bin/bash down_image_url=registry.cn-hangzhou.aliyuncs.com/kuberimages/ images=(kube-proxy:v1.12.3 kube-apiserver:v1.12.3 kube-controller-manager:v1.12.3 kube-scheduler:v1.12.3 etcd:3.2.24 coredns:1.2.2 flannel:v0.10.0-amd64 pause:3.1 kubernetes-dashboard-amd64:v1.10.0) for imageName in ${images[@]} ; do docker pull ${down_image_url}$imageName docker tag ${down_image_url}$imageName k8s.gcr.io/$imageName docker rmi ${down_image_url}$imageName done

由於1.13版本已經支持指定鏡像倉庫,所以我們可以指定到阿里的鏡像倉庫,這樣不可以科學**上網也可以直接安裝了

kubeadm init     --apiserver-advertise-address=192.168.199.116     --image-repository registry.aliyuncs.com/google_containers     --kubernetes-version v1.13.1     --pod-network-cidr=10.244.0.0/16

查看鏡像是否下載

[root@k8s-master ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE k8s.gcr.io/kube-proxy-amd64                v1.10.0             bfc21aadc7d3        7 months ago        97 MB k8s.gcr.io/kube-apiserver-amd64            v1.10.0             af20925d51a3        7 months ago        225 MB k8s.gcr.io/kube-scheduler-amd64            v1.10.0             704ba848e69a        7 months ago        50.4 MB k8s.gcr.io/kube-controller-manager-amd64   v1.10.0             ad86dbed1555        7 months ago        148 MB k8s.gcr.io/etcd-amd64                      3.1.12              52920ad46f5b        7 months ago        193 MB k8s.gcr.io/kubernetes-dashboard-amd64      v1.8.3              0c60bcf89900        8 months ago        102 MB quay.io/coreos/flannel                     v0.10.0-amd64       f0fad859c909        9 months ago        44.6 MB k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64     1.14.8              c2ce1ffb51ed        9 months ago        41 MB k8s.gcr.io/k8s-dns-sidecar-amd64           1.14.8              6f7f2dc7fab5        9 months ago        42.2 MB k8s.gcr.io/k8s-dns-kube-dns-amd64          1.14.8              80cc5ea4b547        9 months ago        50.5 MB k8s.gcr.io/pause-amd64                     3.1                 da86e6ba6ca1        10 months ago       742 kB

三、初始化k8s集群(僅master節點)

[root@k8s-master ~]# kubeadm init --kubernetes-version=v1.10.0 --pod-network-cidr=10.244.0.0/16 #指定版本,需要與docker中的鏡像版本一致

看到 "initialized successfully!"字樣表示初始化完成,並且提示如果是普通用戶如何使用集群,並且提示其他節點如何加入集群的方法

配置環境變量

[root@k8s-master ~]# mkdir -p $HOME/.kube [root@k8s-master ~]#  cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 或者: [root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

查看集群狀態:

[root@k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master   NotReady   master    10m       v1.10.0

可以看到STATUS顯示未就緒,這是因為現在還沒有網絡可用,下一步我們需要配置網絡功能

 四、安裝網絡插件(master節點)

由於網絡功能是作為插件存在的,k8s本身並不提供網絡功能,所有我們需要自行安裝,這里我們選擇flannel

flannel項目地址:https://github.com/coreos/flannel,根據項目的部署手冊進行如下操作

[root@k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel
或者: [root@k8s-master ~]# wget  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml  

flannel支持的模式:

flannel支持多種模型 VxLAN #vxLAN有以下兩種模式 (1) vxlan #疊加網絡或者隧道網絡,通過封裝網絡報文的方式使不同網段的pod之間可以通訊 (2) Directrouting #直接使用主機的IP地作為網關,通過主機路由的方式與目標pod進行通訊,當目標pod與當前pod不在同一三層網絡內,會自動降級為VxLAN模式 host-gw: Host GateWay #與VxLAN的Directrouting模式相同,當目標pod與當前pod不在同一三層網絡內時,pod之間無法通訊 UDP: #早期由於Linux內核不支持VxLAN,host-gw又有非常高的入門門檻,udp是flannel最早期使用的模式,由於使用普通的udp報文通訊,性能非常差,在可以使用前面兩種模式的情況下請勿使用該模式 

#默認flannel的模式為vxlan,可以修改為性能更好的directrouting模式,修改見下圖

安裝完成后,稍等一下再查看集群狀態,發現已經就緒了(master上)

[root@k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master   Ready     master    1h        v1.10.0

五、node節點加入集群(所有node上)

[root@k8s-node1 ~]#  kubeadm join 192.168.199.116:6443 --token fauq6n.e1iv2mbxotq5a1zp --discovery-token-ca-cert-hash sha81dbbeb6

見到以上提示,證明節點加入成功,並提示在master節點上如何查看節點

在master查看節點加入

從圖中可以看到,節點最開始加入后狀態為未就緒,稍等后就會變成就緒狀態,這是因為節點加入后需要創建相關的pod,需要一些時間

至此就完成了K8S三節點集群的安裝部署。


免責聲明!

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



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