Kubernetes(k8s)學習筆記(二)--k8s 集群安裝

1、kubeadm

kubeadm 是官方社區推出的一個用于快速部署 kubernetes 集群的工具。這個工具能通過兩條指令完成一個 kubernetes 集群的部署:

1.1 創建一個 Master 節點$ kubeadm init

1.2 將一個 Node 節點加入到當前集群中$ kubeadm join <Master 節點的 IP 和端口 >

2、前置要求

  • 一臺或多臺機器, 操作系統 CentOS7.x-86_x64
  • 硬件配置: 2GB 或更多 RAM, 2 個 CPU 或更多 CPU, 硬盤 30GB 或更多
  • 集群中所有機器之間網絡互通可以訪問外網, 需要拉取鏡像
  • 禁止 swap 分區

3、部署步驟

3.1.在所有節點上安裝 Docker 和 kubeadm

3.2.部署 Kubernetes Master

3.3.部署容器網絡插件

3.4.部署 Kubernetes Node, 將節點加入 Kubernetes 集群中5.部署 Dashboard Web 頁面, 可視化查看 Kubernetes 資源

4、 環境準備

?1、準備工作

  • 我們可以使用 vagrant 快速創建三個虛擬機。 虛擬機啟動前先設置 virtualbox 的主機網絡。 現全部統一為 192.168.56.1, 以后所有虛擬機都是 56.x 的 ip 地址
  • 1.設置虛擬機存儲目錄, 防止硬盤空間不足


2、?啟動三個虛擬機
?

使用下面的Vagrantfile文件

Vagrant.configure("2") do |config|
? ?(1..3).each do |i|
? ? ? ? config.vm.define "k8s-node#{i}" do |node|
? ? ? ? ? ? # 設置虛擬機的Box
? ? ? ? ? ? node.vm.box = "centos/7"

? ? ? ? ? ? # 設置虛擬機的主機名
? ? ? ? ? ? node.vm.hostname="k8s-node#{i}"

? ? ? ? ? ? # 設置虛擬機的IP
? ? ? ? ? ? node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"

? ? ? ? ? ? # 設置主機與虛擬機的共享目錄
? ? ? ? ? ? # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

? ? ? ? ? ? # VirtaulBox相關配置
? ? ? ? ? ? node.vm.provider "virtualbox" do |v|
? ? ? ? ? ? ? ? # 設置虛擬機的名稱
? ? ? ? ? ? ? ? v.name = "k8s-node#{i}"
? ? ? ? ? ? ? ? # 設置虛擬機的內存大小
? ? ? ? ? ? ? ? v.memory = 4096
? ? ? ? ? ? ? ? # 設置虛擬機的CPU個數
? ? ? ? ? ? ? ? v.cpus = 4
? ? ? ? ? ? end
? ? ? ? end
? ?end
end

  • 將上面的Vagrantfile到非中文無空格目錄下, 運行 vagrant up 啟動三個虛擬機。

題外話:vagrant 完全可以一鍵部署全部 k8s 集群,可參照下面的地址去實現。

https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster

http://github.com/davidkbainbridge/k8s-playground

  • 進入三個虛擬機, 開啟 root 的密碼訪問權限。

Vagrant ssh XXX(比如k8s-node1) 依次進入各個節點系統之后
su root 密碼為 vagrant
vi /etc/ssh/sshd_config
修改 PasswordAuthentication yes/no
重啟服務 service sshd restart

?所有虛擬機設置為 4 核 4G

設置好 NAT 網絡,設置各個節點網絡地址不一樣以便區分不同的節點,要不然各個節點網址一樣就不好操作。

?3、設置 linux 環境(各個節點都執行)

關閉防火墻:
systemctl stop firewalld
systemctl disable firewalld

關閉 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

臨時關閉 swap:
swapoff -a?
需設置為永久關閉
sed -ri 's/.*swap.*/#&/' /etc/fstab?
驗證,swap 必須為 0;
free -g?

?小tips:由于各個節點都要執行重復的命令,在xshell中,我們可以設置在一個節點輸入并發送給所有打開的節點從而避免重復輸入,只需在命令行區域右鍵,在彈出的窗口進行選擇已連接的會話,當只需要把命令在當前節點執行時,切換到當前會話即可。

添加主機名與 IP 對應關系

vi /etc/hosts
10.0.2.15 k8s-node1
10.0.2.24 k8s-node2
10.0.2.25 k8s-node3
hostnamectl set-hostname <newhostname>: 指定新的 hostname
su 切換過來?

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

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF?

然后執行sysctl --system命令讓配置生效

如果執行sysctl --system遇到提示是只讀的文件系統的問題,運行如下命令
mount -o remount rw /

5、 所有節點安裝 Docker、 kubeadm、 kubelet、 kubectl

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

1、 安裝 docker

1、 卸載系統之前的 docker

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2、 安裝 Docker-CE

安裝必須的依賴
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2?

設置 docker repo 的 yum 位置

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

由于docker鏡像的原因,這一步執行可能會失敗,如果失敗配置阿里云的??

安裝 docker,以及 docker-cli

sudo yum install -y docker-ce docker-ce-cli containerd.io

3、配置 docker 加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
} EOF?

sudo systemctl daemon-reload
sudo systemctl restart docker?

4、啟動 docker & 設置 docker 開機自啟

systemctl enable docker

?基礎環境準備好, 可以給三個虛擬機備份一下; 為 node3 分配 16g, 剩下的 3g。 方便未來側測試

2、添加阿里云 yum 源

?$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3、安裝 kubeadm, kubelet 和 kubectl

yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
systemctl enable kubelet
systemctl start kubelet

注意:雖然執行了啟動命令systemctl start kubelet,但一些配置尚未完成,此時啟動失敗是正常的。鑒于篇幅關系,關于配置在下一篇文章進行總結。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77527.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77527.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77527.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI數據分析的優勢分析

隨著科技的飛速發展&#xff0c;人工智能&#xff08;AI&#xff09;已經深入滲透到數據分析領域&#xff0c;為各行各業帶來了前所未有的變革。AI數據分析作為一種新興的技術手段&#xff0c;通過運用機器學習、深度學習等算法對海量數據進行挖掘和分析&#xff0c;顯著提升了…

leetcode(01)森林中的兔子

今天開始記錄刷題的過程&#xff0c;每天記錄自己刷題的題目和自己的解法&#xff0c;歡迎朋友們給出更多更好的解法。 森林中的兔子 森林中有未知數量的兔子&#xff0c;提問其中若干只兔子“還有多少只兔子與你&#xff08;被提問的兔子&#xff09;顏色相同”。將答案收集到…

基于SpringBoot+Vue實現的旅游景點預約平臺功能一

一、前言介紹&#xff1a; 1.1 項目摘要 隨著人們生活水平的提高和休閑時間的增多&#xff0c;旅游已經成為人們生活中不可或缺的一部分。旅游業作為全球經濟的重要支柱&#xff0c;其發展趨勢呈現出數字化、網絡化和智能化的特點。傳統的旅游服務方式&#xff0c;如人工預約…

【支付】支付寶支付

下面為你詳細介紹使用 Spring Boot 對接支付寶支付&#xff0c;實現支付與退款功能的具體步驟和代碼示例。 添加依賴 在 pom.xml 里添加支付寶 SDK 依賴&#xff1a; <dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframewo…

shell 正則表達式與文本處理器

目錄 前言 一、正則表達式 &#xff08;一&#xff09;定義與用途 &#xff08;二&#xff09;基礎正則表達式 &#xff08;三&#xff09;基礎正則表達式元字符 &#xff08;四&#xff09;擴展正則表達式 二、文本處理器&#xff1a;Shell 編程的得力助手 &#xff0…

ASP.NET Core 最小 API:極簡開發,高效構建(上)

一、概述 構建最小 API&#xff0c;以創建具有最小依賴項的 HTTP API。 它們非常適合于需要在 ASP.NET Core 中僅包括最少文件、功能和依賴項的微服務和應用。 本文介紹使用 ASP.NET Core 生成最小 API 的基礎知識&#xff0c;將創建以下 API&#xff1a; API&#xff08;應用…

Apache Parquet 文件組織結構

簡要概述 Apache Parquet 是一個開源、列式存儲文件格式&#xff0c;最初由 Twitter 與 Cloudera 聯合開發&#xff0c;旨在提供高效的壓縮與編碼方案以支持大規模復雜數據的快速分析與處理。Parquet 文件采用分離式元數據設計 —— 在數據寫入完成后&#xff0c;再追加文件級…

IntelliJ IDEA 2025.1 發布 ,默認 K2 模式 | Android Studio 也將跟進

2025.1 版本已經發布&#xff0c;在此之前我們就聊過該版本的 《Terminal 又發布全新重構版本》&#xff0c;而現在 2025.1 中的 K2 模式也成為了默認選項。 可以預見&#xff0c;這個版本可能會包含不少大坑&#xff0c;為下個 Android Studio 祈禱。 首先有一點可以確定&…

云效部署實現Java項目自動化部署圖解

前言 記錄下使用云效部署Java項目&#xff0c;實現java項目一鍵化自動化部署。 云效流程說明&#xff1a; 1.云效拉取最新git代碼后 2.進行maven編譯打包后&#xff0c;上傳到指定服務器目錄 3.通過shell腳本&#xff0c;先kill java項目后&#xff0c;通過java -jar 啟動項…

國際數據加密算法(IDEA)詳解

以下是修正后的準確版本,已解決原文中的術語、符號及技術細節問題: ?國際數據加密算法(IDEA)? IDEA是一種分組加密算法,由Xuejia Lai(來學嘉)和James Massey于1990年設計。IDEA使用128位密鑰對64位明文分組進行加密,經過8輪迭代運算后生成64位密文分組。其安全性基于…

TensorFlow介紹

TensorFlow 是由 Google 開發 的開源機器學習框架&#xff0c;主要用于構建、訓練和部署機器學習模型。它支持深度學習、傳統機器學習和數值計算&#xff0c;適用于圖像識別、自然語言處理&#xff08;NLP&#xff09;、推薦系統、強化學習等多種任務。 核心特性 基于 數據流…

百級Function架構集成DeepSeek實踐:Go語言超大規模AI工具系統設計

一、百級Function系統的核心挑戰 1.1 代碼結構問題 代碼膨脹現象&#xff1a;單個文件超過2000行代碼路由邏輯復雜&#xff1a;巨型switch-case結構維護困難依賴管理失控&#xff1a;跨Function依賴難以追蹤 // 傳統實現方式的問題示例 switch functionName { case "fu…

嵌入式芯片中的 SRAM 內容細講

什么是 RAM&#xff1f; RAM 指的是“隨機存取”&#xff0c;意思是存儲單元都可以在相同的時間內被讀寫&#xff0c;和“順序訪問”&#xff08;如磁帶&#xff09;相對。 RAM 不等于 DRAM&#xff0c;而是一類統稱&#xff0c;包括 SRAM 和 DRAM 兩種主要類型。 靜態隨機存…

標準的JNI (Java Native Interface) 加載函數 JNI_OnLoad

1.JNI_OnLoad 在 Android Native 開發中&#xff0c;JNI_OnLoad 是動態注冊本地方法的標準入口點。以下是一個標準實現示例及其說明&#xff1a; JNI_OnLoad 標準實現 #include <jni.h> #include <string>// 聲明本地方法對應的 C/C 函數 jint native_add(JNIEnv…

算法導論思考題

2-1 在歸并排序中對小數組采用插入排序 c. 假定修改后的算法的最壞情況運行時間為 Θ \Theta Θ(nknlg(n/k))&#xff0c;要使修改后的算法與標準的歸并排序具有相同的運行時間&#xff0c;作為n的一個函數&#xff0c;借助 Θ \Theta Θ記號&#xff0c;k的最大值是什么&#…

JavaScript 性能優化

JavaScript 性能優化是提高 Web 應用性能的關鍵步驟,特別是在處理大量數據、復雜計算或頻繁的 DOM 操作時。以下是一些常見的 JavaScript 性能優化技巧和策略: 文章目錄 @[TOC]一、代碼層面優化1. **減少全局變量**2. **避免使用 `with` 語句**3. **使用局部變量**4. **減少 …

NLP高頻面試題(四十七)——探討Transformer中的注意力機制:MHA、MQA與GQA

MHA、MQA和GQA基本概念與區別 1. 多頭注意力(MHA) 多頭注意力(Multi-Head Attention,MHA)通過多個獨立的注意力頭同時處理信息,每個頭有各自的鍵(Key)、查詢(Query)和值(Value)。這種機制允許模型并行關注不同的子空間上下文信息,捕捉復雜的交互關系。然而,MHA…

51單片機的原理圖和PCB繪制

51單片機最小系統原理圖 加了兩個led燈和按鍵檢測電路。 PCB中原件擺放位置 成品 資源鏈接&#xff1a;https://download.csdn.net/download/qq_61556106/90656365

使用注解方式整合ssm時,啟動tomcat掃描不到resource下面的xxxmapper.xml

解決org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.mapper.方法 在Spring與Mybatis整合時&#xff0c;可能會遇到這樣的報錯 原因&#xff1a; 其原因為mapper路徑的映射錯誤&#xff0c;表示在嘗試執行某個 Mapper 接口的方法時…

提示詞設計:動態提示詞 標準提示詞

提示詞設計:動態提示詞 標準提示詞 研究背景:隨著人工智能與司法結合的推進以及裁判文書公開數量增多,司法摘要任務愈發重要。傳統司法摘要方法生成質量有待提升,大語言模型雖有優勢,但處理裁判文書時存在摘要結構信息缺失、與原文不一致等問題。研究方法 DPCM方法:分為大…