天天看點

基于centos 7.2部署k8s v1.18.0叢集

基于centos 7.2部署k8s v1.18.0叢集

最近k8s的官方版本已經更新到最新版本,小編在centos7.2的系統上部署最新的v1.18.0

并将安裝步驟記錄下來,本文對k8s的基礎知識不做介紹,如果想了解基本知識請移步

k8s官網

查閱。

元件版本:

Kubernetes v1.18.0

calico 3.13.1

docker 19.03.8

一 環境準備和部署方式

1 環境準備

Kubernetes系統可運作于多種平台之上,包括虛拟機、裸伺服器或PC等,若僅用于快速了解或開發的目的,那麼可直接于單個主機之上部署Kubernetes叢集,将叢集的所有元件均部署運作于單台主機上,本文想學習Kubernetes叢集的完整功能,應該建構真正的分布式叢集環境,将Master和Node等部署于多台主機之上,本文采用1 master+2 node的形式,

三台主機:

角色 作業系統 記憶體 cpu 磁盤/GB Ip位址

Master Centos7.2 4 2 40 172.20.128.6

Node1 Centos7.2 4 2 40 172.20.128.7

Node2 Centos7.2 4 2 40 172.20.128.8

第二種:

采用kubeadm工具進行部署,由k8s官方所提供的專門部署叢集的管理工具, 每一個節點主機上包括master節點都要手動安裝并運作docker,同時也都要手動安裝并運作kubelet。如果将第一個節點初始化為master節點,在執行初始化這個步驟,其實就是通過kubeadm工具将API Server、etcd、controller-manager、scheduler各元件運作為Pod,也就是跑在docker上。而其他node節點,因已經運作了kubelet、docker元件,剩下的kube-proxy元件也是要運作在Pod上。

本文采用kubeadm工具進行部署,kubeadm是Kubernetes項目自帶的叢集建構工具,它負責執行建構一個最小化的可用叢集以及将其啟動等的必要基本步驟,簡單來講,kubeadm是Kubernetes叢集全生命周期的管理工具,可用于實作叢集的部署、更新/降級及拆除,下圖為kubeadm的功能示意圖。

基于centos 7.2部署k8s v1.18.0叢集

二 環境部署

1 環境檢查

a) 主機名稱

三個主機分别命名為master.k8s.com、node1.k8s.com、node2.k8s.com

hostnamectl set-hostname your-new-host-name

b) 檢視修改結果

hostnamectl status

c) 設定 hostname 解析

echo "127.0.0.1 $(hostname)" >> /etc/hosts

d) 檢查網絡

ip address可顯示預設網卡的 IP 位址,Kubernetes 将使用此 IP 位址與叢集内的其他節點通信如 172.20.128.6,所有節點上 Kubernetes 所使用的 IP 位址必須可以互通(無需 NAT 映射、無安全組或防火牆隔離)

2 安裝docker及kubelet

在 master 節點和 worker 節點都要執行

export REGISTRY_MIRROR=

https://registry.cn-hangzhou.aliyuncs.com

a) 檢查和解除安裝舊版本(如果之前有安裝docker)

yum remove -y docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-selinux \

docker-engine-selinux \

docker-engine

b) 配置yum repository

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

yum-config-manager --add-repo

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

c) 安裝并啟動docker

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

systemctl enable docker

systemctl start docker

d) 安裝 nfs-utils

yum install -y nfs-utils

yum install -y wget

e) 關閉防火牆

systemctl stop firewalld

systemctl disable firewalld

f) 關閉selinux

setenforce 0

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

g) 關閉swap

swapoff -a

yes | cp /etc/fstab /etc/fstab_bak

cat /etc/fstab_bak |grep -v swap > /etc/fstab

h) 解除安裝舊安裝版本

yum remove -y kubelet kubeadm kubectl

yum install -y kubelet kubeadm kubectl

基于centos 7.2部署k8s v1.18.0叢集

i) 修改docker Cgroup Driver為systemd

sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service

j) 設定 docker 鏡像,提高 docker 鏡像下載下傳速度和穩定性

curl -sSL

https://kuboard.cn/install-script/set_mirror.sh

| sh -s ${REGISTRY_MIRROR}

k) 重新開機 docker,并啟動 kubelet

systemctl daemon-reload

systemctl restart docker

systemctl enable kubelet && systemctl start kubelet

docker version

3 初始化master節點

設定環境變量:

export MASTER_IP=172.20.128.6

export APISERVER_NAME=apiserver.demo

export POD_SUBNET=10.100.0.1/16

echo "172.20.128.6 ${APISERVER_NAME}" >> /etc/hosts

配置kubeadm-config.yaml檔案

cat < ./kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta2

kind: ClusterConfiguration

kubernetesVersion: v1.18.0

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

controlPlaneEndpoint: "172.20.128.6:6443"

networking:

serviceSubnet: "10.96.0.0/16"

podSubnet: "10.100.0.1/16"

dnsDomain: "cluster.local"

EOF

kubeadm init

kubeadm init --config=kubeadm-config.yaml --upload-certs

執行完畢後如下截圖。

kubeadm join 172.20.128.6:6443 --token 4sad52.9lqsr40fmmi29723 --discovery-token-ca-cert-hash sha256:edddce9484037bc6e2d19f3c7ce53c629cb97c198f761c9de49463be85a21dc5

基于centos 7.2部署k8s v1.18.0叢集

3 配置 kubectl

rm -rf /root/.kube/

mkdir /root/.kube/

cp -i /etc/kubernetes/admin.conf /root/.kube/config

4 安裝 calico 網絡插件

wget

https://kuboard.cn/install-script/calico/calico-3.13.1.yaml

kubectl apply -f calico-3.13.1.yaml

基于centos 7.2部署k8s v1.18.0叢集

5 master上驗證

執行指令驗證叢集狀态已經正常

kubectl get nodes

kubectl get nodes -o wide

基于centos 7.2部署k8s v1.18.0叢集

到此,基于centos7.2的K8S v1.18.0叢集安裝完畢并驗證叢集運作正常。