掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
作者:Gauss松鼠會 2022-08-21 16:50:36
云計算
云原生 本文主要介紹用 kubeadm? 簡單部署 Kubernetes 的過程,其中涉及到提前準(zhǔn)備機(jī)器、環(huán)境、安裝包等動作,過程中需要大家細(xì)心操作,部分組件、包等不能通過 wget 順利下載時,建議手工下載。

灌陽網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,灌陽網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為灌陽千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的灌陽做網(wǎng)站的公司定做!
Kubernetes 這個單詞來自于希臘語,含義是舵手或領(lǐng)航員。Kubernetes,也稱為 K8S,其中 8 是代表中間 “ubernete” 的 8 個字符。
官網(wǎng)描述如下圖:生產(chǎn)級別的容器編排系統(tǒng),是用于自動部署,擴(kuò)展和管理容器化應(yīng)用程序的開源系統(tǒng)。 (編排:按照一定的目的依次排列;調(diào)配、安排)。
K8S 是 CNCF 畢業(yè)的項目,本來 Kubernetes 是 Google 的內(nèi)部項目,后來開源出來,又后來為了其茁壯成長,捐給了 Cloud Native Computing Foundation(CNCF:云原生計算基金會)
我們在 github 上可以看到,Kubernetes 是采用 Go 語言開發(fā)的。Go(又稱 Golang)是 Google 開發(fā)的一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言。
?
k8s 集群控制節(jié)點,對集群進(jìn)行調(diào)度管理,接受集群外用戶去集群操作請求;
Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 數(shù)據(jù)庫)和 Controller MangerServer 所組成;
集群工作節(jié)點,運(yùn)行用戶業(yè)務(wù)應(yīng)用容器;
Nodes 節(jié)點也叫 Worker Node,包含 kubelet、kube proxy 和 Pod(Container Runtime);
部署 Kubernetes 環(huán)境(集群)主要有多種方式:
本文將介紹以上的第一種方式進(jìn)行示意部署講解:
kubeadm 是官方社區(qū)推出的一個用于快速部署 kubernetes 集群的工具,這個工具能通過兩條指令完成一個 kubernetes 集群的部署;
創(chuàng)建一個 Master 節(jié)點:
kubeadm init
將 Node 節(jié)點加入到 Master 集群中:
$ kubeadm join
關(guān)閉防火墻:
systemctl stop firewalld
systemctl disable firewalld
關(guān)閉 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
setenforce 0 #臨時
關(guān)閉 swap(k8s 禁止虛擬內(nèi)存以提高性能):
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #臨時
在 master 添加 hosts (ip 地址根據(jù)自己預(yù)先設(shè)置的為準(zhǔn)):
cat >> /etc/hosts << EOF 192.168.52.100 k8smaster 192.168.52.101 k8snode EOF
設(shè)置網(wǎng)橋參數(shù):
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
sysctl --system #生效
時間同步:
yum install ntpdate -y
ntpdate time.windows.com
所有服務(wù)器節(jié)點安裝 Docker、kubeadm、kubelet、kubectl,Kubernetes 默認(rèn)容器運(yùn)行環(huán)境是 Docker,因此首先需要安裝 Docker;
(1) 安裝 Docker
更新 docker 的 yum 源:
yum install wget -y
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安裝指定版本的 docker(自行替換最新版本號 x.x.x.x):
yum install docker-ce-x.x.x.x -y
配置加速器加速下載:
/etc/docker/daemon.json
{
"registry-mirrors": ["https://cr.console.aliyun.com/"]
}
然后執(zhí)行,不然會提示警告:
systemctl enable docker.service
(2) 接下搭建:kubeadm、kubelet、kubectl , 添加 k8s 的阿里云 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 install kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 -y
然后執(zhí)行,不然會提示警告:
systemctl enable kubelet.service
查看有沒有安裝:
yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl
查看安裝的版本:
kubelet –version
此時應(yīng)重啟一下系統(tǒng) reboot(centos);
(4) 部署 Kubernetes Master 主節(jié)點(此命令在 master 機(jī)器上執(zhí)行)
kubeadm init --apiserver-advertise-address=192.168.52.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.24.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
補(bǔ)充:service-cidr 的選取不能和 PodCIDR 及本機(jī)網(wǎng)絡(luò)有重疊或者沖突,一般可以選擇一個本機(jī)網(wǎng)絡(luò)和 PodCIDR 都沒有用到的私網(wǎng)地址段,比如 PODCIDR 使用 10.244.0.0/16, 那么 service cidr 可以選擇 10.96.0.0/12,網(wǎng)絡(luò)無重疊沖突即可;
接下來在 master 機(jī)器上執(zhí)行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
接下來把 node 節(jié)點加入 Kubernetes master 中,在 Node 機(jī)器上執(zhí)行;
向集群添加新節(jié)點,執(zhí)行的命令是 kubeadm init 最后輸出的 kubeadm join 命令(如下圖):
kubeadm join 192.168.52.101:端口號 --token wa5bif.zfuvbesevdfvf4of \
--discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8
下載 kube-flannel.yml 文件 (flannel 作為 k8s 的集群中常用的網(wǎng)絡(luò)組件,其 yml 文件的獲取,建議去 github 中獲取)
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
應(yīng)用 kube-flannel.yml 文件得到運(yùn)行時容器;
kubectl apply -f kube-flannel.yml (在 master 機(jī)器上執(zhí)行):
然后查看節(jié)點狀態(tài): kubectl get nodes (在 master 機(jī)器上執(zhí)行),STATUS:Ready 時,說明我們的 k8s 環(huán)境至此就搭建好了。
查看運(yùn)行時容器 pod (一個 pod 里面運(yùn)行了多個 docker 容器)
kubectl get pods -n kube-system
以上就是用 Kubeadm? 簡單部署 Kubernetes 的過程,其中涉及到提前準(zhǔn)備機(jī)器、環(huán)境、安裝包等動作,過程中需要大家細(xì)心操作,部分組件、包等不能通過 wget 順利下載時,建議手工下載。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流