《蹲坑學Kubernetes》之:kubeadm部署Kubernetes-v1.18.6群集

2020-08-29 DoDo在線

一、環境準備

注意:在k8-smaster、k8s-node-1和k8s-node-2進行準備工作配置。

1、內核升級

[root@k8s-master ~] rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm[root@k8s-master ~] yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel -y[root@k8s-master ~] grub2-set-default &34;[root@k8s-master ~] systemctl stop firewalld.service[root@k8s-master ~]swapoff -a vim /etc/fstab

4、關閉 SELinux

[root@k8s-master ~] vim /etc/sysctl.d/k8s.conf添加:net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.forwarding = 1net.ipv6.conf.all.forwarding = 1vm.swappiness=0vm.overcommit_memory=1vm.panic_on_oom=0fs.inotify.max_user_watches=89100fs.file-max=52706963fs.nr_open=52706963net.core.default_qdisc = fqnet.ipv4.tcp_congestion_control = bbr [root@k8s-master ~] sysctl -p

二、安裝docker-ce-19

注意:在k8-smaster、k8s-node-1、k8s-node-2安裝Docker。

[root@k8s-master ~] yum -y install docker-ce[root@k8s-master ~] systemctl start docker.service[root@k8s-master ~] docker info

三、安裝 Kubeadm:v1.18.6

注意:在k8-smaster、k8s-node-1和k8s-node-2中安裝Kubeadm。

1、安裝ipvsadm模塊

[root@k8s-master ~] modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4[root@k8s-master ~] vim /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0 [root@k8s-master ~] yum clean all[root@k8s-master ~] yum -y install kubelet kubeadm kubectl                   systemctl enable kubelet.service[root@k8s-master ~] systemctl status kubelet.service

注意:此時kubelet.service服務是不會啟動的,等到kubelet.service初始化後才會啟動。

4、創建kubernetes集群

(1)查看該版本的容器鏡像版本

[root@k8s-master ~] vim k8s-dowm-images.sh添加: 使用如下腳本下載國內鏡像,並修改tag為google的tagset -eKUBE_VERSION=v1.18.6KUBE_PAUSE_VERSION=3.2ETCD_VERSION=3.4.3-0CORE_DNS_VERSION=1.6.7 GCR_URL=k8s.gcr.ioALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers images=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION}kube-controller-manager:${KUBE_VERSION}kube-apiserver:${KUBE_VERSION}pause:${KUBE_PAUSE_VERSION}etcd:${ETCD_VERSION}coredns:${CORE_DNS_VERSION}) for imageName in ${images[@]} ; do  docker pull $ALIYUN_URL/$imageName  docker tag  $ALIYUN_URL/$imageName $GCR_URL/$imageName  docker rmi $ALIYUN_URL/$imageNamedone  [root@k8s-master ~] ./k8s-dowm-images.sh或者輸入下載命令下載鏡像[root@k8s-master ~] docker images

(3)初始化kubernetes集群

注意:在k8-smaster中進行初始化操作。

[root@k8s-master ~] systemctl status kubelet.service

[root@k8s-master ~] mkdir -p $HOME/.kube[root@k8s-master ~] chown $(id -u):$(id -g) $HOME/.kube/config

(6)將node節點加入Kubernetes群集

查看token[root@k8s-master ~] kubeadm token create --print-join-command 

將node節點加入群集

注意:在k8-node-1和k8-node-2中進行操作。

[root@k8s-node-1 ~] kubeadm join 192.168.1.3:6443 --token rkaf1i.y7m2u7z068tgw7os     --discovery-token-ca-cert-hash sha256:09d6bd168550b25e30a43e7bda6db0ad650840d0ce5aa342e7c72b03d3805dc3


(7)查看群集運行狀態

[root@k8s-master ~] kubectl get nodes

注釋:

NotReady:未準備好。原因是沒有配置網絡。

四、設置flannel網絡

注意:在k8s-master、k8-node-1和k8-node-2中部署Flannel網絡。

1、下載cni軟體

[root@k8s-master ~] mkdir /opt/cni/bin -p[root@k8s-master ~] wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

4、下載鏡像

[root@k8s-master ~] vim kube-flannel.yml修改:      &34;: &34;,  注意與master初始化保持一致。--pod-network-cidr=10.244.0.0/16      &34;: {        &34;: &34;      }……「name」: 「cbr0」,      「cniVersion」: 「0.3.1」,                   添加此行,確保pod之間能夠通信。

6、創建flannel資源

[root@k8s-master ~] kubectl get pods -n kube-system

[root@k8s-master ~] kubectl get pods -n kube-system -o wide | grep flannel

8、驗證Flannel網絡

(1)在master上查看ip地址狀態

[root@master ~] ifconfig flannel.1


註:Flannel與cni0接口

(2)在node-1上查看ip地址狀態

[root@k8s-node-1 ~] ifconfig flannel.1  &&  ifconfig cni0

(3)在node-2上查看ip地址狀態

[root@k8s-node-2 ~] ifconfig flannel.1  &&  ifconfig cni0

(4)檢查通信狀況

註:ping Node節點中cni的IP,能通信為正常!

[root@k8s-master ~] ping 10.244.2.1

五、Kubernetes群集測試

1、設置命令行自動補全功能

[root@k8s-master ~] source <(kubectl completion bash)

2查看節點狀態

(1)查看節點

[root@k8s-master ~] kubectl get nodes -o wide

[root@k8s-master ~] kubectl version

到此,kubernetes群集部署完畢!

六、安裝kubernetes1.18.6的web-ui端:

1、下載dashboard配置文件

[root@k8s-master ~] cat recommended.yaml | grep image:

[root@k8s-master ~] docker pull kubernetesui/metrics-scraper:v1.0.4

3、修改配置文件

[root@k8s-master ~] kubectl apply -f   recommended.yaml

[root@k8s-master ~] kubectl get pods -n kubernetes-dashboard

[root@k8s-master ~] kubectl get service --all-namespaces或者[root@k8s-master ~] kubectl describe service kubernetes-dashboard -n kubernetes-dashboard

5、創建管理員帳號

創建一個專用的 serviceaccount 帳號 dashboard-admin

[root@k8s-master ~] 綁定角色 cluster-admin

[root@k8s-master ~] kubectl get sa -n kube-system

[root@k8s-master ~] kubectl get secret  --all-namespaces

6、獲取dashboard-admin 的token值

[root@k8s-master ~] firefox https://192.168.1.1:30000/ &

首次方式需要添加安全例外。

使用Token認證登錄,將之前查詢的Token值複製粘貼過來即可。

登錄成功後



相關焦點

  • Kubeadm部署Kubernetes-v1.19.0群集
    ] vim /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0[root@k8s-master ~] yum clean all[root@k8s-master
  • Kubeadm部署CentOS8三節點Kubernetes V1.18.0集群實踐
    - package containerd.io-1.2.2-3.el7.x86_64 is excluded - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded - package containerd.io-1.2.6
  • 如何部署一個Kubernetes集群
    正是基於這樣的痛點,在志願者的推動下Kubernetes社區終於發起了kubeadm這一獨立的一鍵部署工具,使用kubeadm我們可以通過幾條簡單的指令來快速地部署一個kubernetes集群。後面的內容,就將具體演示如何使用kubeadm來部署一個Kubernetes集群。
  • 使用Kubeadm設置Kubernetes集群的高可用性
    讓我們從kubectl命令驗證節點狀態,到master-1節點並執行以下命令[kadmin@k8s-master-1 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master-1 Ready master 31m v1.18.6 k8s-master
  • 《蹲坑學Kubernetes》之17-13:Secret
    《蹲坑學Kubernetes》之17-13:SecretSecret 解決了密碼、token、密鑰等敏感數據的配置問題,而不需要把這些敏感數據暴露到鏡像或者Pod Spec中。Secret可以以Volume或者環境變量的方式使用。
  • 《蹲坑學kubernetes》之19-2:部署Flannel
    一、安裝部署flannel網絡>[root@k8s-master ~]34;https://192.168.1.1:2379,https://192.168.1.2:2379,https://192.168.1.3:2379&39;{ &34;: &34;, &34;: {&34;: &34;}}& etcdctl --ca-file=/usr/local/kubernetes/ssl/ca.pem 
  • 《蹲坑學kubernetes》之二:Kubernetes架構概述
    本節內容提綱: Kubernetes架構 Kubernetes組成一、Kubernetes架構Kubernetes是一個用於容器集群的自動化部署、擴容以及運維的開源平臺,把這些計算機群集連接在一起,可作為單個單元工作,也可邏輯的形成一個整體。
  • 國內快速部署kubernetes集群的最佳實踐(二)——安裝指定版本
    在上一篇文章中(),已經說明了如何使用kubeadm安裝最新穩定版k8s本文探討如何在上一篇教程的基礎上,修改一些步驟,實現安裝指定版本的k8s,並在這裡提供兩個示例:安裝k8s v1.16和k8s v1.14。
  • 《蹲坑學kubernetes》之七:籤發CA證書
    本節提綱:了解kubernetes的證書服務創建CA證書圖1:kubernetes之Log一、了解kubernetes的證書服務具體詳細如下:1、Etcd配套證書2、Kube-APIserver配套證書3、kube-scheduler配套證書4、kube-controller-manager配套證書5、kube-proxy 配套證書6、service account配套證書7、admin配套證書8、kubelet
  • kubeadm部署單master節點
    版本變更非常快,因此這裡先列出了有哪些版本,我們安裝1.18.6版本。~]# dnf install -y kubelet-1.18.6 kubeadm-1.18.6 kubectl-1.18.6(3)設置開機自啟動
  • 《蹲坑學K8S》之22-1:Kubernetes認證機制
    Kubernetes支持以下認證插件:(1)X509 證書(2)靜態 Token 文件(3)引導 Token(4)靜態密碼文件(5)Service Account(6)OpenID(7)Webhook(8)認證代理(9)OpenStack Keystone 密碼
  • 2020版Kubernetes快速上手指南,讓你所見即所得
    安裝步驟整體安裝分為如下8大步:配置說明安裝工具: kubeadm (v1.18.2)檢查群集,看節點是否加入群集如圖上所示即表明我們kubernetes群集安裝成功,如果Work節點狀態暫時顯示為NotReady也不用著急,我們繼續配置網絡即可。
  • 《蹲坑學kubernetes》之17-14:ServerAccount
    《蹲坑學kubernetes》之17-14:ServerAccount API Server作為Kubernetes網關,是訪問和管理資源對象的唯一入口,其各種集群組件訪問資源都需要經過網關才能進行正常訪問和管理。
  • 《蹲坑學kubernetes》之17-14:ServerAccount
    《蹲坑學kubernetes》之17-14:ServerAccountAPI Server作為Kubernetes網關,是訪問和管理資源對象的唯一入口,其各種集群組件訪問資源都需要經過網關才能進行正常訪問和管理。
  • 《蹲坑學kubernetes》之四:了解Kubernetes安裝部署方式
    圖1:Kubernetes之Log本節內容提綱:安裝Minikube使用kubeadm方式安裝k8s二進位方式部署在實際應用中,針對Kubernetes的不同應用目的,選擇安裝部署的方式也不一樣。Kubeadm部署Kubernetes集群的基本步驟如下:第一步:安裝組件# yum -y install kubelet kubeadm kubectl第二步:初始化群集# kubeadm init第三步:將節點加入群集# kubeadm join上面說的是Kubeadm部署方式的一般步驟,實際上,Kubeadm
  • 國內部署kubernetes集群的最佳實踐(一)—官方教程+阿里鏡像源
    項目github地址:https://github.com/usualheart/install_k8s_official在國內環境下,藉助阿里鏡像源,按照官方的指導,使用腳本一步一步安裝kubernetes。
  • 《蹲坑學K8S》之19-5:二進位部署Calico網絡
    二進位部署kubernetes完畢後,查看群集狀態為NotReady,現在開始二進位部署[root@k8s-master ~] docker pull calico/node:v3.14.0[root@k8s-master ~] cat /usr/local/kubernetes/ssl/etcd-key.pem | base64 -w 0[root@k8s-master ~] cat /usr/local/kubernetes/ssl/ca.pem | base64 -w 0
  • 《蹲坑學Kubernetes》之17-10:Service
    Kubernetes 在設計之初就充分考慮了針對容器的服務發現與負載均衡機制,提供了Service資源,並通過kube-proxy 配合 cloud provider 來適應不同的應用場景。隨著 kubernetes 用戶的激增,用戶場景的不斷豐富,又產生了一些新的負載均衡機制。
  • 《蹲坑學kubernetes》之17-12:Ingress
    Web-1[root@k8s-master ~] vim web-2.yaml添加:apiVersion: v1kind: Servicemetadata:  name: web-2  labels:    tier: frontendspec:  type: NodePort  selector
  • 如何在 Kubernetes 集群中部署 ceph-csi
    本文詳細介紹了如何在 Kubernetes 集群中部署 ceph-csi (v3.1.0),並使用 RBD 作為持久化存儲。Ready master 23d v1.18.8sealos03 Ready master 23d v1.18.8Ceph 版本:$ ceph versionceph version 14.2.11 (f7fdb2f52131f54b891a2ec99d8205561242cdaf