<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

    10 分鐘部署一個 Kubernetes 集群

    共 739字,需瀏覽 2分鐘

     ·

    2020-08-09 05:43

    kubeadm是官方社區(qū)推出的一個用于快速部署kubernetes集群的工具。

    這個工具能通過兩條指令完成一個kubernetes集群的部署:

    1. # 創(chuàng)建一個 Master 節(jié)點

    2. $ kubeadm init


    3. # 將一個 Node 節(jié)點加入到當前集群中

    4. $ kubeadm join <Master節(jié)點的IP和端口>

    1. 安裝要求

    在開始之前,部署Kubernetes集群機器需要滿足以下幾個條件:

    • 一臺或多臺機器,操作系統(tǒng) CentOS7.x-86_x64;

    • 硬件配置:2GB或更多RAM,2個CPU或更多CPU,硬盤30GB或更多;

    • 集群中所有機器之間網(wǎng)絡互通;

    • 可以訪問外網(wǎng),需要拉取鏡像;

    • 禁止swap分區(qū)。

    2. 準備環(huán)境

    單Master架構(gòu)圖

    角色IP
    k8s-master192.168.31.61
    k8s-node1192.168.31.62
    k8s-node2192.168.31.63
    1. 關閉防火墻:

    2. $ systemctl stop firewalld

    3. $ systemctl disable firewalld


    4. 關閉selinux

    5. $ sed -i 's/enforcing/disabled/'/etc/selinux/config # 永久

    6. $ setenforce 0# 臨時


    7. 關閉swap

    8. $ swapoff -a # 臨時

    9. $ vim /etc/fstab # 永久


    10. 根據(jù)規(guī)劃設置主機名:

    11. $ hostnamectl set-hostname


    12. master添加hosts

    13. $ cat >>/etc/hosts << EOF

    14. 192.168.31.61 k8s-master

    15. 192.168.31.62 k8s-node1

    16. 192.168.31.63 k8s-node2

    17. EOF


    18. 將橋接的IPv4流量傳遞到iptables的鏈:

    19. $ cat >/etc/sysctl.d/k8s.conf << EOF

    20. net.bridge.bridge-nf-call-ip6tables =1

    21. net.bridge.bridge-nf-call-iptables =1

    22. EOF

    23. $ sysctl --system # 生效


    24. 時間同步:

    25. $ yum install ntpdate -y

    26. $ ntpdate time.windows.com

    3. 安裝Docker/kubeadm/kubelet【所有節(jié)點】

    Kubernetes默認CRI(容器運行時)為Docker,因此先安裝Docker。

    3.1 安裝Docker

    1. $ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

    2. $ yum -y install docker-ce

    3. $ systemctl enable docker && systemctl start docker

    配置鏡像下載加速器:

    1. $ cat >/etc/docker/daemon.json << EOF

    2. {

    3. "registry-mirrors":["https://b9pmyelo.mirror.aliyuncs.com"]

    4. }

    5. EOF

    6. $ systemctl restart docker

    3.2 添加阿里云YUM軟件源

    1. $ cat >/etc/yum.repos.d/kubernetes.repo << EOF

    2. [kubernetes]

    3. name=Kubernetes

    4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

    5. enabled=1

    6. gpgcheck=0

    7. repo_gpgcheck=0

    8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

    9. EOF

    3.3 安裝kubeadm,kubelet和kubectl

    由于版本更新頻繁,這里指定版本號部署:

    1. $ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0

    2. $ systemctl enable kubelet

    • kubelet:systemd守護進程管理

    • kubeadm:部署工具

    • kubectl:k8s命令行管理工具

    4. 部署Kubernetes Master

    在192.168.31.61(Master)執(zhí)行。

    1. $ kubeadm init \

    2. --apiserver-advertise-address=192.168.31.61 \

    3. --image-repository registry.aliyuncs.com/google_containers \

    4. --kubernetes-version v1.18.0 \

    5. --service-cidr=10.96.0.0/12 \

    6. --pod-network-cidr=10.244.0.0/16

    • —apiserver-advertise-address 集群通告地址

    • —image-repository 由于默認拉取鏡像地址k8s.gcr.io國內(nèi)無法訪問,這里指定阿里云鏡像倉庫地址。

    • —kubernetes-version K8s版本,與上面安裝的一致

    • —service-cidr 集群內(nèi)部虛擬網(wǎng)絡,Pod統(tǒng)一訪問入口

    • —pod-network-cidr Pod網(wǎng)絡,與下面部署的CNI網(wǎng)絡組件yaml中保持一致

    拷貝kubectl使用的連接k8s認證文件到默認路徑:

    1. mkdir -p $HOME/.kube

    2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    3. sudo chown $(id -u):$(id -g) $HOME/.kube/config


    4. $ kubectl get nodes

    5. NAME STATUS ROLES AGE VERSION

    6. k8s-master NotReady master 2m v1.18.0

    如果你在學習中遇到問題或者文檔有誤可聯(lián)系阿良~ 微信: init1024

    5. 加入Kubernetes Node

    在192.168.31.62/63(Node)執(zhí)行。

    向集群添加新節(jié)點,執(zhí)行在kubeadm init輸出的kubeadm join命令:

    1. $ kubeadm join 192.168.31.61:6443--token esce21.q6hetwm8si29qxwn \

    2. --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5

    默認token有效期為24小時,當過期之后,該token就不可用了。這時就需要重新創(chuàng)建token,操作如下:

    1. $ kubeadm token create --print-join-command

    6. 部署容器網(wǎng)絡(CNI)

    這里使用Flannel作為Kubernetes容器網(wǎng)絡方案,解決容器跨主機網(wǎng)絡通信。
    Flannel是CoreOS維護的一個網(wǎng)絡組件,F(xiàn)lannel為每個Pod提供全局唯一的IP,F(xiàn)lannel使用ETCD來存儲Pod子網(wǎng)與Node IP之間的關系。flanneld守護進程在每臺主機上運行,并負責維護ETCD信息和路由數(shù)據(jù)包。

    1. $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


    2. # 修改國內(nèi)鏡像地址

    3. $ sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.11.0-amd64#g" kube-flannel.yml

    4. kubectl apply -f kube-flannel.yml


    5. $ kubectl get pods -n kube-system

    7. 部署官方Dashboard(UI)

    1. $ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml

    默認Dashboard只能集群內(nèi)部訪問,修改Service為NodePort類型,暴露到外部:

    1. $ vi recommended.yaml

    2. ...

    3. kind:Service

    4. apiVersion: v1

    5. metadata:

    6. labels:

    7. k8s-app: kubernetes-dashboard

    8. name: kubernetes-dashboard

    9. namespace: kubernetes-dashboard

    10. spec:

    11. ports:

    12. - port:443

    13. targetPort:8443

    14. nodePort:30001

    15. selector:

    16. k8s-app: kubernetes-dashboard

    17. type:NodePort

    18. ...


    19. $ kubectl apply -f recommended.yaml


    20. $ kubectl get pods -n kubernetes-dashboard

    21. NAME READY STATUS RESTARTS AGE

    22. dashboard-metrics-scraper-6b4884c9d5-gl8nr 1/1 Running 0 13m

    23. kubernetes-dashboard-7f99b75bf4-89cds 1/1 Running 0 13m

    訪問地址:https://NodeIP:30001

    創(chuàng)建service account并綁定默認cluster-admin管理員集群角色:

    1. # 創(chuàng)建用戶

    2. $ kubectl create serviceaccount dashboard-admin -n kube-system


    3. # 用戶授權

    4. $ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin


    5. # 獲取用戶Token

    6. $ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

    使用輸出的Token登錄Dashboard。





    - END -





    推薦閱讀



    學習交流 Go 語言,掃碼回復「進群」即可


    站長 polarisxu

    自己的原創(chuàng)文章

    不限于 Go 技術

    職場和創(chuàng)業(yè)經(jīng)驗


    Go語言中文網(wǎng)

    每天為你

    分享 Go 知識

    Go愛好者值得關注



    瀏覽 63
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報
    評論
    圖片
    表情
    推薦
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    成人激情综合网 | 国产夫妻自拍在线 | 大鸡吧伊人| 影音AV最新资源站 | 亚洲第一网站在线观看 |