1、環(huán)境介紹
????master:192.168.21.10
????node01:192.168.21.11
????node02:192.168.21.12
2、準(zhǔn)備工作(所有節(jié)點都要操作)
????2.1、修改三臺機器的主機名? ? ?
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
????2.2、關(guān)閉selinux
setenforce 0????#臨時修改
永久生效(修改后重啟機器生效)
vim /etc/sysconfig/selinux
寫入
SELINUX=enforcing改為SELINUX=disabled
????2.3、修改hosts
????????vim /etc/hosts
????????添加三臺機器的路由(master點修改好后,可以通過scp拷貝到node節(jié)點)

????????關(guān)閉iptables和firewalld
????2.4、修改yum源(master和node節(jié)點都需要配置)
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo????#下載docker源碼包
vim /etc/yum.repo.d/kubernetes.repo
寫入
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
enabled=1
保存退出
yum repolist #檢查是否有可用軟件包

????2.5、關(guān)閉swap分區(qū)
vim /etc/fstab(注釋掉swap分區(qū))
保存并退出

swapoff -a????#vim后執(zhí)行
3、master節(jié)點
????3.1、yum安裝docker和kubernetes組建
yum install docker-ce kubeadm kubectl kubelet????#安裝docker和k8s組建
????3.2、設(shè)置開機自啟
systemctl daemon-reload
systemctl start docker????#啟動docker
systemctl enable docker && systemctl enable kubelet????#設(shè)置開機自啟
????3.3、下載master節(jié)點需要的鏡像
????????因為k8s.gcr.io訪問不了,需要手動下載鏡像
k8s.gcr.io/kube-apiserver:v1.16.2
k8s.gcr.io/kube-controller-manager:v1.16.2
k8s.gcr.io/kube-scheduler:v1.16.2
k8s.gcr.io/kube-proxy:v1.16.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2
quay.io/coreos/flannel:v0.11.0-amd64
????下載鏡像并替換成k8s源
docker pull bluersw/kube-apiserver:v1.16.2
docker tag bluersw/kube-apiserver:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2
docker pull bluersw/kube-controller-manager:v1.16.2
docker tag bluersw/kube-controller-manager:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2
docker pull bluersw/kube-scheduler:v1.16.2
docker tag bluersw/kube-scheduler:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2
docker pull bluersw/kube-proxy:v1.16.2
docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker pull bluersw/pause:3.1
docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1
docker pull bluersw/etcd:3.3.15-0
docker tag bluersw/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker pull bluersw/coredns:1.6.2
docker tag bluersw/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
docker pull bluersw/flannel:v0.11.0-amd64
docker tag bluersw/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

docker images????#查看本地可用鏡像
????3.4、移除多余的鏡像
docker rmi bluersw/kube-apiserver:v1.16.2
docker rmi bluersw/kube-controller-manager:v1.16.2
docker rmi bluersw/kube-scheduler:v1.16.2
docker rmi bluersw/kube-proxy:v1.16.2
docker rmi bluersw/pause:3.1
docker rmi bluersw/etcd:3.3.15-0
docker rmi bluersw/coredns:1.6.2
docker rmi bluersw/flannel:v0.11.0-amd64
????3.5、kubeadm init初始化
kubeadm init? --kubernetes-version=v1.16.2 --apiserver-advertise-address=192.168.0.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16
????????- kubernetes-version????#指定k8s版本
????????- apiserver-advertise-address????#指定apiserver網(wǎng)段
????????- pod-network-cidr=10.244.0.0/16????#Pod 中間網(wǎng)絡(luò)通訊我們用flannel,flannel要求是10.244.0.0/16,這個IP段就是Pod的IP段
????????- service-cidr=10.1.0.0/16????#Service(服務(wù))網(wǎng)段

[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
????[警告IsDockerSystemdCheck]:檢測到“cgroupfs”作為Docker cgroup驅(qū)動程序。 推薦的驅(qū)動程序是“systemd”
????解決辦法:更換驅(qū)動
vim/etc/docker/daemon.json #沒有就創(chuàng)建一個
寫入
{
"exec-opts":["native.cgroupdriver=systemd"]
}
systemctl daemon-reload????#檢查配置文件
systemctl restart docker????#重啟docker??
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.4. Latest validated version: 18.09
error execution phase preflight: [preflight] Some fatal errors occurred:
????警告:16.2最大支持的docker版本是18.09,而我裝的是19.03,這個可以忽略
[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
????error:最小安裝需要2個cpu,而現(xiàn)在只有一個
????解決辦法:關(guān)閉虛擬機,升級虛擬機配置
????重新初始化后,又有新的錯誤

[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
解決辦法:echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
????重新初始化

????????- kubernetes初始化成功
????????- 如果不是管理員,需要給使用kubernetes的用戶,執(zhí)行如上命令(我使用的root用戶)

????????- 加入k8s集群命令
kubeadm join 192.168.21.10:6443 --token pmkpvr.wp2vqip3wqvzaz5w \
? ? --discovery-token-ca-cert-hash sha256:6ba303d71f378813565833215c0b3337a50ceb78b2fdcaf4241def659af66565
4、配置node節(jié)點,加入集群(node1/node2)
????4.1、前置工作
????????- 關(guān)閉swap分區(qū)
????????- 配置docker和kubelet開機自啟
????????- 更換docker驅(qū)動程序為systemd
????4.2、現(xiàn)在node節(jié)點需要的鏡像并替換源
k8s.gcr.io/pause:3.1
k8s.gcr.io/kube-proxy:v1.16.2
quay.io/coreos/flannel:v0.11.0-amd64
docker pull bluersw/kube-proxy:v1.16.2
docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker pull bluersw/pause:3.1
docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1
docker pull bluersw/flannel:v0.11.0-amd64
docker tag bluersw/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
下載完后刪除不需要的鏡像
docker rmi bluersw/kube-proxy:v1.16.2
docker rmi bluersw/flannel:v0.11.0-amd64
docker rmi bluersw/pause:3.1

????4.3、加入k8s集群
kubeadm join 192.168.21.10:6443 --token pmkpvr.wp2vqip3wqvzaz5w --discovery-token-ca-cert-hash sha256:6ba303d71f378813565833215c0b3337a50ceb78b2fdcaf4241def659af66565
5、master安裝flannel
官網(wǎng)推薦,kubernetes1.7以上可使用如下命令安裝
kubectl apply -f?https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(但是這個網(wǎng)址需要翻墻,國內(nèi)訪問不了,我是翻墻先把文件下載下來,然后手動安裝)

6、檢查
????kubectl get nodes? ? #查看當(dāng)前集群,所有的節(jié)點

????kubectl get -A pods -o wide? ? ? ? #查看當(dāng)前集群所有的pod信息

????kubectl get pods -n kube-system? ? ? ? #查看所有名稱空間
