k8s集群安裝全指南

一、安裝前的準備工作

在安裝k8s集群前,我們需要進行一些準備工作:

1、選擇合適的操作系統


Ubuntu18.04及以上版本、CentOS7及以上版本、Debian9及以上版本等

2、準備至少3台物理或虛擬機


1台Master節點,2台或以上的Worker節點

3、配置節點的主機名和hosts


修改 /etc/hosts 文件,加入各節點主機名和對應的IP地址

二、安裝Docker

通過Docker來管理Kubernetes所需要的容器。

1、安裝必要的一些系統工具


$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

2、添加Docker官方的GPG密鑰


$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

3、添加Docker的安裝源

Ubuntu 20.10:


$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Ubuntu 18.04:


$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

CentOS 7:


$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4、更新apt或yum包列表


$ sudo apt-get update
$ sudo yum makecache

5、安裝Docker


$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo yum install docker-ce docker-ce-cli containerd.io

6、啟動Docker服務


$ sudo systemctl start docker
$ sudo service docker start

7、設置Docker開機自啟


$ sudo systemctl enable docker
$ sudo chkconfig docker on

8、驗證Docker是否安裝成功


$ sudo docker run hello-world

三、安裝Kubernetes

1、添加阿里雲的Kubernetes安裝源和GPG密鑰


$ cat < /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

2、安裝Kubectl和Kubeadm


$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl

3、拉取所需鏡像


$ sudo kubeadm config images pull

4、初始化Master節點

創建 kubeadm.yaml 文件


apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.0.100        # Master節點IP地址
  bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: stable
controlPlaneEndpoint: "k8s-ha:6443"      # 集群VIP地址
dnsDomain: cluster.local
apiServer:
  certSANs:
  - 192.168.0.100                       # Master節點IP地址
  - 127.0.0.1
  - k8s-ha
controlPlaneEndpoint: k8s-ha:6443       # 安裝會創建 HAProxy 服務自動配置
networking:
  podSubnet: "10.244.0.0/16"             # 此IP段不能與實際網路中的IP段衝突
EOF

執行初始化Master命令


$ sudo kubeadm init --config kubeadm.yaml

如果因為網路原因等導致初始化失敗,可以使用如下命令重置


$ sudo kubeadm reset -f

5、配置kubectl


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

6、部署網路插件


# 選擇 Calico 網路插件
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

7、將Worker節點加入集群

在每個啟動了Docker的 Worker 節點上運行初始化命令


$ sudo kubeadm join k8s-ha:6443 --token xxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxx

8、查看節點狀態


$ kubectl get nodes

四、使用HAProxy部署高可用Kubernetes集群

1、安裝HAProxy


$ sudo apt-get install haproxy -y

2、替換HAProxy的配置文件

修改/haproxy/haproxy.cfg文件(注釋掉原文件所有內容,並用以下內容替換):


global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL).
    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
    ssl-default-bind-options no-sslv3

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

frontend k8s-frontend
    bind *:6443
    mode tcp
    default_backend k8s-backend

backend k8s-backend
    mode tcp
    balance roundrobin
    option tcp-check
    server k8s-master-1 192.168.0.100:6443 check inter 1000 rise 3 fall 3
    server k8s-master-2 192.168.0.101:6443 check inter 1000 rise 3 fall 3
    server k8s-master-3 192.168.0.102:6443 check inter 1000 rise 3 fall 3

3、開啟ip_forward


$ sudo sysctl net.ipv4.ip_forward=1
$ sudo sysctl -p

4、啟動HAProxy服務


$ systemctl restart haproxy

5、重啟所有Master節點


$ systemctl restart kubelet

6、在Master節點上檢查集群狀態


$ kubectl get nodes

如果所有節點處於 Ready 狀態,則Kubernetes集群已成功高可用部署。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293965.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-26 13:15
下一篇 2024-12-26 13:15

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python字元轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智慧等領域廣泛應用。在很多場景下需要將字元串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字元轉列…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • Python初學者指南:第一個Python程序安裝步驟

    在本篇指南中,我們將通過以下方式來詳細講解第一個Python程序安裝步驟: Python的安裝和環境配置 在命令行中編寫和運行第一個Python程序 使用IDE編寫和運行第一個Py…

    編程 2025-04-29
  • FusionMaps應用指南

    FusionMaps是一款基於JavaScript和Flash的互動式地圖可視化工具。它提供了一種簡單易用的方式,將複雜的數據可視化為地圖。本文將從基礎的配置開始講解,到如何定製和…

    編程 2025-04-29
  • Python起筆落筆全能開發指南

    Python起筆落筆是指在編寫Python代碼時的編寫習慣。一個好的起筆落筆習慣可以提高代碼的可讀性、可維護性和可擴展性,本文將從多個方面進行詳細闡述。 一、變數命名 變數命名是起…

    編程 2025-04-29
  • Python中文版下載官網的完整指南

    Python是一種廣泛使用的編程語言,具有簡潔、易讀易寫等特點。Python中文版下載官網是Python學習和使用過程中的重要資源,本文將從多個方面對Python中文版下載官網進行…

    編程 2025-04-29

發表回復

登錄後才能評論