使用Kubeadm建立k8s集羣之部署規劃(三十)

前言         

上一篇咱們講述了使用Kubectl管理k8s集羣,那麼接下來,咱們將使用kubeadm來啓動k8s集羣。html

部署k8s集羣存在必定的挑戰,尤爲是部署高可用的k8s集羣更是頗爲複雜(後續會講)。所以本教程會在部署的過程當中穿插講解一些部署相關知識、原理和步驟,好比kubeadm、kubelet以及啓動集羣時的實際部署動做等等。整個部署過程所有腳本化,以便各位參考和學習。node

因整個集羣部署教程篇幅較長,所以會拆分紅幾篇進行說明。linux


 

目錄

使用Kubeadm建立k8s集羣docker

  • Kubeadm概述 json

  • Kubelet概述 centos

  • 定義集羣部署目標和規劃 api

  • 部署規劃bash


 

使用Kubeadm建立k8s集羣

Kubeadm概述

Kubeadm 是一個命令行工具,它主要提供了「kubeadm init」 以及 「kubeadm join」這兩個命令來快速建立和初始化kubernetes 集羣。服務器

Kubeadm經過執行必要的操做來啓動和運行一個最小可用的集羣。它被故意設計爲只關心啓動集羣,而不是以前的節點準備工做。一樣的,諸如安裝各類各樣的插件,例如 Kubernetes Dashboard、監控解決方案以及特定雲提供商的插件,這些都不在它負責的範圍。網絡

主要命令

其主要命令和說明以下表所示:

 

命令

說明

kubeadm init

啓動一個Kubernetes主節點

kubeadm join

啓動一個Kubernetes工做節點而且將其加入到集羣

kubeadm upgrade

更新一個 Kubernetes 集羣到新版本

kubeadm config

查看存儲在集羣中的kubeadm配置,例如「kubeadm config images list」能夠列出kubeadm須要的鏡像

kubeadm token

令牌管理

kubeadm reset

重置集羣,也就是將還原kubeadm init 或者 kubeadm join 對主機所作的任何更改

kubeadm version

打印 kubeadm 版本

 

 

Kubelet概述

kubelet 是在每一個節點上運行的主要「節點代理」。簡單地說,kubelet 的主要功能就是定時獲取節點上pod/container 的指望狀態(運行什麼容器、運行的副本數量、網絡或者存儲如何配置等等),並調用對應的容器平臺接口達到這個狀態,並確保它們可以健康的運行。所以,kubelet的主要功能爲:

  • pod管理

  • 容器健康檢查

  • 容器監控 

注意,不是 Kubernetes建立的容器將不在 kubelet 的管理範圍。

瞭解了這些,接下來,咱們來使用Kubeadm來建立集羣。

 

定義集羣部署目標和規劃

有目標,咱們纔能有的放矢。在本節內容中,咱們將基於三臺虛擬機來搭建一個k8s集羣,其中一臺做爲主節點,另外兩臺做爲工做節點。

具體部署架構以下所示:

1.安裝規劃

服務器規劃:

主機名稱

操做系統

IP

系統配置

備註

k8s-master

CentOS-7-x86_64

172.16.2.201

2核2G

做爲主節點

k8s-node1

CentOS-7-x86_64

172.16.2.202

2核2G

做爲工做節點

k8s-node2

CentOS-7-x86_64

172.16.2.203

2核2G

做爲工做節點

值得注意的是:

  • 服務器最小內存不得小於2G,CPU核心數最少爲2;

  • 羣集中全部的計算機之間擁有徹底的網絡鏈接(公共或專用網絡);

  • 全部機器都有sudo權限;

相關環境的搭建和初始化筆者這裏先行略過。

如下內容均使用root帳戶安裝和配置。

 

Pod 分配 IP 段:10.244.0.0/16

kubernetes-version:v1.15.0

apiserver-advertise-address:172.16.2.201

 

部署規劃

接下來,咱們就開始按規劃進行部署。主體步驟以下所示:

1.主機和IP設置

各節點主機名稱和IP設置如表所示:

主機名稱

IP

k8s-master

172.16.2.201

k8s-node1

172.16.2.202

k8s-node2

172.16.2.203

接下來咱們以master(k8s-master)爲例,相關設置步驟以下所示(請注意替換相關參數):

  • 設置主機名稱以及修改主機記錄

bash:
#設置Host名稱
hostnamectl set-hostname k8s-master #查看host名稱
hostname #修改Host文件,給127.
0.0.1添加hostname
echo "127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 k8s-master
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
"> /etc/hosts #查看修改結果
cat
/etc/hosts

  • 配置網絡服務以及設置固定IP

bash:
#配置網卡
echo "

DEVICE=eth0
TYPE=Ethernet
IPADDR=172.16.2.201
PREFIX=24
NETMASK=255.255.255.0
NETWORK=172.16.2.0
GATEWAY=172.16.2.254
BROADCAST=172.16.2.255
DEFROUTE=yes
ONBOOT=yes
USERCTL=yes
BOOTPROTO=static
NAME=eth0
IPV4_FAILURE_FATAL=yes
UUID=5ed1bf4a-4be2-4040-ad55-fea853b849d1
"> /etc/sysconfig/network-scripts/ifcfg-eth0 #編輯/etc/sysconfig/network
echo "NETWORKING=yes
HOSTNAME=k8s-master
"> /etc/sysconfig/network #編輯/etc/resolv.conf,設置DNS
echo "nameserver 172.16.2.254
nameserver 114.114.114.114
nameserver 8.8.8.8
"> /etc/resolv.conf #重啓網絡服務systemctl restart network.service #重啓網絡服務
systemctl status network.service #查看網絡服務狀態

  • 系統設置

bash:
#關閉Selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

#永久關閉
Swapswapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
echo "vm.swappiness = 0">> /etc/sysctl.conf  

#修改內核參數cat <<EOF > /etc/sysctl.d/k8s.confnet.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF

 

2.Docker安裝

這裏推薦使用如下腳原本安裝官方已經充分測試過的指定版本的Docker-ce以及設置加速器:

# 安裝必須的包
yum install yum-utils device-mapper-persistent-data lvm2
# 添加Docker倉庫
yum-config-manager \  
--add-repo \ 
 https://download.docker.com/linux/centos/docker-ce.repo
# 安裝指定版本的Docker CEyum update &&
 yum install docker-ce-18.06.2.ce
# 建立 /etc/docker 目錄
mkdir /etc/docker
# 設置守護程序
cat > /etc/docker/daemon.json <<EOF
{ 
"exec-opts": ["native.cgroupdriver=systemd"], 
"log-driver": "json-file", 
"log-opts": {    
"max-size": "100m" 
 },  
"storage-driver": "overlay2",  
"storage-opts": [    
"overlay2.override_kernel_check=true"  
] ,  
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# 重啓Docker服務
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

3.主機端口設置

  • 主節點端口設置:

協議

方向

端口

說明

TCP

入站

6443*

Kubernetes API server

TCP

入站

2379-2380

etcd server client API

TCP

入站

10250

Kubelet API

TCP

入站

10251

kube-scheduler

TCP

入站

10252

kube-controller-manager

 

  • 工做節點端口設置:

協議

方向

端口

說明

TCP

入站

10250

Kubelet API

TCP

入站

30000-32767

NodePort Services

 

CentOS默認沒有安裝防火牆,須要使用如下命令安裝和啓用防火牆:

#安裝iptables服務
yum install iptables-services
systemctl enable iptables.servicesy
stemctl start iptables.service

而後使用編輯器按Demo編輯文件/etc/sysconfig/iptables設置准入端口便可。

在開發實驗階段,爲了方便,你們也能夠直接禁用防火牆:

systemctl stop firewalld.service
systemctl disable firewalld.service

 

往期內容連接

相關文章
相關標籤/搜索