每个节点均下载该文件包,解压,进入解压文件目录下
文件包:
链接:https://pan.baidu.com/s/1JKpRl3ck9r5JKCoHrAqIcQ
提取码:lq0u
集群结构:1 master节点 2 work节点 均为 centos7 虚拟机 搭建 1.17.3 k8s集群
1.环境准备(每个节点)
# 修改每个节点名字,不修改会导致名字冲突,集群中节点不显示
[root@localhost ~]# hostnamectl --static set-hostname nodename
# 系统环境设置 防火墙,交换分区,虚拟机内核
[root@localhost install-k8s-easy]# sh prerequisite.sh
2.安装 docker(every node)
# 添加阿里云的docker repo,安装并配置docker
[root@localhost install-k8s-easy]# sh install-docker.sh
3.安装 kube 工具链(every node)
#添加阿里云的 kube repo,下载相关工具包括,kubeadm,kubelet,kubectl
[root@localhost install-k8s-easy]#sh install-kubetools.sh
4.下载或导入 k8s.gcr.io 相关镜像(every node)
#在线下载
# 1. 列出相应镜像及其需要的版本
[root@localhost install-k8s-easy]# kubeadm config images list
W1024 13:54:33.199713 7985 version.go:101] could not fetch a Kubernetes version from the internet: unable to get UR
L "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)W1024 13:54:33.200040 7985 version.go:102] falling back to the local client version: v1.17.3
W1024 13:54:33.200419 7985 validation.go:28] Cannot validate kube-proxy config - no validator is available
W1024 13:54:33.200444 7985 validation.go:28] Cannot validate kubelet config - no validator is available
k8s.gcr.io/kube-apiserver:v1.17.3
k8s.gcr.io/kube-controller-manager:v1.17.3
k8s.gcr.io/kube-scheduler:v1.17.3
k8s.gcr.io/kube-proxy:v1.17.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5
# 2.将gcr-pull.sh中镜像版本修改为上步骤中对应镜像的版本号
[root@localhost install-k8s-easy]# vi gcr-pull.sh
#! /bin/sh
images=(
kube-apiserver:v1.17.3 kube-controller-manager:v1.17.3 kube-scheduler:v1.17.3 kube-proxy:v1.17.3 pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done
# 3.从阿里云下载对应镜像
[root@localhost install-k8s-easy]# sh ./gcr-pull.sh
# 采用镜像包(离线)
# 在解压的镜像文件夹中 执行脚本
[root@localhost install-k8s-easy]# unrar x images.rar
[root@localhost install-k8s-easy]# sh gcr-tar.sh
5.配置master节点
# 1.导出kubeadm-config.yaml配置文件
[root@localhost install-k8s-easy]# kubeadm config print init-defaults > kubeadm-config.yaml
# 2.修改 kubeadm-config.yaml
# 改 advertiseAddress 值为主节点 IP
# 修改 networking 配置,设置 pod 子网段 podSubnet:
# 修改kubernetesVersion 导出的版本为1.17.0 改为与之前下载镜像时统一的版本
[root@localhost install-k8s-easy]# vi kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.3.120
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: localhost.localdomain
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.17.3
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
podSubnet: 10.244.0.0/16
scheduler: {}
# 3.初始化
[root@localhost install-k8s-easy]# kubeadm init --config kubeadm-config.yaml
#成功后将token留下,当node节点加入集群时备用
kubeadm join {master ip}:6443 --token xxx
示例:
kubeadm join 192.168.10.188:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:df97efef0b54bb786e55a872060e70ec94290d39d6f954cfe0127e099cf1c296
# 4.进行工具配置
[root@localhost install-k8s-easy]# sh ./kubectl.sh
# 5.查看安装状态
[root@localhost install-k8s-easy]# kubectl cluster-info
Kubernetes master is running at https://192.168.10.188:6443
KubeDNS is running at https://192.168.10.188:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
# 6.安装Flannel网络插件
[root@localhost install-k8s-easy]# kubectl apply -f ./kube-flannel.yaml
# 7.生成集群的安全配置文件
[root@localhost install-k8s-easy]# mkdir -p $HOME/.kube
[root@localhost install-k8s-easy]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@localhost install-k8s-easy]# chown $(id -u):$(id -g) $HOME/.kube/config
6.节点加入集群
#加入集群 初始化集群时产生的命令
[root@localhost ~]# kubeadm join 192.168.10.188:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:df97efef0b54bb786e55a872060e70ec94290d39d6f954cfe0127e099cf1c296
7.查看集群节点
[root@localhost install-k8s-easy]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
fednode1 Ready <none> 3m7s v1.17.3
fednode2 Ready <none> 19s v1.17.3
localhost.localdomain Ready master 46m v1.17.3