容器-基于Docker構建Kubernetes集群

      網友投稿 776 2022-05-30

      無可置疑,kubernetes是當下最流行的PaaS平臺。k8s是谷歌開源的一個分布式容器集群管理系統。k8s的能力不僅僅是編排容器,更能提供負載均衡、彈性伸縮、DevOps等功能。本次將基于docker容器,實現Kubernetes實驗環境的部署。

      Pod 是 K8S 中最重要也是最基本的概念,Pod 是最小的部署單元,是一組容器的集合。每個 Pod 都由一個特殊的根容器 Pause 容器,以及一個或多個緊密相關的用戶業務容器組成。Pause 容器作為 Pod 的根容器,以它的狀態代表整個容器組的狀態。K8S 為每個 Pod 都分配了唯一的 IP 地址,稱之為 Pod IP。Pod 里的多個業務容器共享 Pause 容器的IP,共享 Pause 容器掛載的 Volume。

      實驗環境:

      master節點: 192.168.1.10/centos

      node節點: 192.168.1.11/centos

      本次實驗采用離線部署,包括kubeadm、kubelet、kubectl的離線yum倉庫,核心組件容器鏡像、dashboard與flannel網絡配置

      1.系統環境準備

      yum環境配置

      此處實驗已經將k8s安裝源,所需docker鏡像,yaml配置文件放在本地

      master節點配置本地yum源,開啟ftp為node節點提供yum源

      配置hosts文件,master節點與node節點做法相同

      [root@master K8S]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.10 master 192.168.1.11 node

      關閉swap,關閉swap掛載,master節點與node節點做法相同

      升級系統內核,重啟,master節點與node節點做法相同

      [root@master K8S]# yum -y upgrade

      開啟路由轉發,master節點與node節點做法相同

      [root@master ~]# touch /etc/sysctl.d/K8S.conf [root@master ~]# vim /etc/sysctl.d/K8S.conf

      #以下內容寫入文件

      [root@master ~]# modprobe br_netfilter [root@master ~]# sysctl -p /etc/sysctl.d/K8S.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1

      node節點相同操作

      2.Chrony時間同步配置

      容器-基于Docker構建Kubernetes集群

      master節點配置chrony服務

      [root@master ~]# yum –y install chrony [root@master ~]# vim /etc/chrony.conf

      #修改配置文件如圖

      [root@master ~]# systemctl enable chronyd [root@master ~]# systemctl restart chronyd [root@master ~]# timedatectl set-ntp true

      node節點配置chrony服務

      [root@node ~]# yum -y install chrony [root@node ~]# vim /etc/chrony.conf

      #修改配置文件如圖,server處設置為master的地址即可

      [root@node ~]# systemctl enable chronyd [root@node ~]# systemctl restart chronyd

      node節點執行chronyc sources,如圖配置成功

      3.配置IPVS

      [root@master ~]# touch /etc/sysconfig/modules/ipvs.modules [root@master ~]# vim /etc/sysconfig/modules/ipvs.modules

      #寫入以下內容

      #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 [root@master ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules [root@master ~]# bash /etc/sysconfig/modules/ipvs.modules

      #驗證

      [root@master ~]# lsmod|grep -e ip_vs -e nf_conntrack_ipv4 nf_conntrack_ipv4 15053 0 nf_defrag_ipv4 12729 1 nf_conntrack_ipv4 ip_vs_sh 12688 0 ip_vs_wrr 12697 0 ip_vs_rr 12600 0 ip_vs 145497 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr nf_conntrack 139224 2 ip_vs,nf_conntrack_ipv4 libcrc32c 12644 3 xfs,ip_vs,nf_conntrack [root@master ~]# yum -y install ipset ipvsadm

      node節點相同操作

      4.Docker 安裝

      此處docker安裝不多做解釋

      [root@master ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 [root@master ~]# yum -y install docker-ce docker-ce-cli containerd.io [root@master ~]# systemctl start docker [root@master ~]# touch /etc/docker/daemon.json [root@master ~]# vim /etc/docker/daemon.json

      #寫入以下內容到文件

      { "exec-opts":["native.cgroupdriver=systemd"] } [root@master ~]# systemctl daemon-reload [root@master ~]# systemctl restart docker [root@master ~]# systemctl enable docker

      node節點相同操作

      5.安裝Kubernetes集群

      安裝服務并設置啟動

      [root@master ~]# yum -y install kubelet kubeadm kubectl [root@master ~]# systemctl enable kubelet [root@master ~]# systemctl start kubelet

      master節點運行腳本,加載鏡像到docker

      [root@master K8S]# ./kubernetes_base.sh

      node節點相同操作

      初始化Kubernetes集群

      master節點配置

      [root@master K8S]# kubeadm init --apiserver-advertise-address 192.168.1.10 --kubernetes-version="v1.14.1" --pod-network-cidr=10.16.0.0/16

      #–pod-network-cidr=10.16.0.0/16此參數需要慎重考慮,需要和后續fannel網絡配合

      #運行如下成功,最后輸出的為其余節點加入集群的命令

      kubeadm join 192.168.1.10:6443 --token j7ounb.afbmhmgmifg86ybd \ --discovery-token-ca-cert-hash sha256:52e9c7afb44aea691efe52822148bd51fb71e8bca7e0d2a49df6443a9d0e2a71

      初始化操作主要經歷了下面 15 個步驟,每個階段均輸出均使用[步驟名稱]作為開頭:

      [init]:指定版本進行初始化操作。 [preflight]:初始化前的檢查和下載所需要的 Docker 鏡像文件。 [kubelet-start]:生成 Kubelet 的配置文件/var/lib/kubelet/config.yaml,沒有這個文件Kubelet 無法啟動,所以初始化之前的 Kubelet 實際上啟動失敗。 [certificates]:生成 Kubernetes 使用的證書,存放在/etc/kubernetes/pki 目錄中。 [kubeconfig]:生成 KubeConfig 文件,存放在/etc/kubernetes 目錄中,組件之間通信 需要使用對應文件。 [control-plane]:使用/etc/kubernetes/manifest 目錄下的 YAML 文件,安裝 Master 組 件。 [etcd]:使用/etc/kubernetes/manifest/etcd.yaml 安裝 Etcd 服務。 [wait-control-plane]:等待 control-plan 部署的 Master 組件啟動。 [apiclient]:檢查 Master 組件服務狀態。 [uploadconfig]:更新配置。 [kubelet]:使用 configMap 配置 Kubelet。 [patchnode]:更新 CNI 信息到 Node 上,通過注釋的方式記錄。 [mark-control-plane]:為當前節點打標簽,打了角色 Master 和不可調度標簽,這樣默認就不會使用 Master 節點來運行 Pod。 [bootstrap-token]:生成的 Token 需要記錄下來,后面使用 kubeadm join 命令往集群中添加節點時會用到。 [addons]:安裝附加組件 CoreDNS 和 kube-proxy。

      創建用戶配置文件夾

      Kubectl默認會在執行的用戶home目錄下面的.kube目錄中尋找config文件,配置kubectl 工具。

      此處為root用戶創建目錄復制配置文件

      [root@master ~]# mkdir /root/.kube [root@master ~]# cp -i /etc/kubernetes/admin.conf /root/.kube/config [root@master ~]# chown root:root /root/.kube/config

      檢查集群狀態

      配置flannel網絡

      [root@master K8S]# ls images Kubernetes kubernetes_base.sh yaml [root@master K8S]# kubectl apply -f yaml/kube-flannel.yaml

      Node節點加入集群

      [root@node ~]# kubeadm join 192.168.1.10:6443 --token e20is5.o38kb995lp24huk5 --discovery-token-ca-cert-hash sha256:4625049a4ff225437950b0de1e211ee4b9d1d1e750ee2e04b25d5664ca0aed16

      master上執行kubectl get nodes查看節點狀態,成功加入后節點顯示ready

      安裝Dashboard

      #安裝kubernetes-dashboard

      [root@master K8S]# kubectl create -f yaml/kubernetes-dashboard.yaml secret/kubernetes-dashboard-certs created serviceaccount/kubernetes-dashboard created role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created deployment.apps/kubernetes-dashboard created service/kubernetes-dashboard created

      #創建dashboard用戶

      [root@master K8S]# kubectl create -f yaml/dashboard-adminuser.yaml serviceaccount/kubernetes-dashboard-admin created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-admin created

      檢測pods狀態

      kubectl get pods –n kube-system

      若操作正常此時已經全部running狀態,若有相關服務不在running狀態請排錯嗷

      查看dashboard服務端口號,映射外部為30000端口

      kubectl get svc –n kube-system

      瀏覽器訪問https://ip:30000

      k8s Dashboard登陸需要令牌

      kubectl -n kube-system describe secret kubernetes-dashboard-admin-token

      將token:后面字符串輸入網頁登陸

      kubernetes部署到此

      Docker Kubernetes

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:并發編程系列之線程并行學習筆記
      下一篇:從技術層面深度剝析:B2B供應鏈管理系統架構
      相關文章
      久久精品国产亚洲Aⅴ蜜臀色欲| 亚洲成AV人片一区二区| 亚洲国产黄在线观看| 亚洲国产综合在线| 日木av无码专区亚洲av毛片| 久久久久久a亚洲欧洲aⅴ| 亚洲国产精品碰碰| 亚洲成?v人片天堂网无码| 久久亚洲精品无码gv| 亚洲啪AV永久无码精品放毛片| 亚洲天堂电影在线观看| 亚洲最大免费视频网| 亚洲视频在线观看视频| 亚洲精品国产情侣av在线| 久久久久久a亚洲欧洲AV| 久久青青成人亚洲精品| 亚洲成人中文字幕| 亚洲天堂在线播放| 亚洲美女大bbbbbbbbb| 亚洲福利电影一区二区?| 亚洲狠狠狠一区二区三区| 亚洲国产精品成人久久久| 亚洲人成在线免费观看| 亚洲最大福利视频| 亚洲国产视频久久| 亚洲精品精华液一区二区 | 亚洲永久在线观看| 亚洲人精品亚洲人成在线| 亚洲黄页网在线观看| 亚洲精品色播一区二区| 亚洲AV无码成人精品区日韩| 亚洲av日韩专区在线观看| 亚洲?V乱码久久精品蜜桃 | 全亚洲最新黄色特级网站| 亚洲最大av无码网址| 国产亚洲人成网站在线观看不卡| 久久亚洲AV无码精品色午夜麻| 亚洲一区二区中文| 亚洲国产精品成人综合色在线婷婷 | 中文有码亚洲制服av片| 亚洲国产欧美国产综合一区 |