一、实验环境
操作系统: CentOS7.2 Minimal
k8s-master(serverA): 192.168.1.102
k8s-node01(serverB): 192.168.1.101
kubeadm的安装方式:
kube-apiserver kube-controller-manager kube-scheduler etcd 在master节点以pod形式运行 ,kubeadm kubectl kubelet docker 在主节点上用rpm包安装,kubelet docker 用systemd控制。
kube-proxy 在node节点以容器形式运行,kubeadm kubelet docker 在主节点上用rpm包安装,kubelet docker 用systemd控制。
flannel 在master和node节点都以pod形式运行。
实验基于一个前提条件是,k8s-master和k8s-node01两台主机,通过代理实现Linux主机的全局代理,也就是说能直接从谷歌官网拉取集群所需的镜像。
如果你的实验环境不满足,那么可以先设置代理,或者通过别人的镜像站点将所需镜像打包到本地,重新打上标签加载使用!
二、配置域名解析
在serverA和serverB
# cat /etc/hosts
三、仓库配置
在serverA和serverB
安装docker,我们使用docker官方仓库
# yum -y install yum-utils
# yum -y install epel-release
# yum-config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo
# cat /etc/yum.repos.d/docker-ce.repo
安装kubeadm kubelet kubectl,我们使用阿里云仓库
# vim /etc/yum.repos.d/kubenetes.repo
###################################################################
[kubenetes]
name=Kubenetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
enabled=1
####################################################################
# yum repolist
四、软件安装
在serverA
# yum -y install docker-ce kubeadm kubelet kubectl
在serverB
# yum -y install docker-ce kubeadm kubelet
五、设置docker代理
实验的前提是我们设置了全局代理,也就是给docker设置代理后,能直接从谷歌官网拉取集群所需的镜像。
在serverA和serverB
# vim /usr/lib/systemd/system/docker.service
Environment="HTTPS_PROXY=http://127.0.0.1:8118"
Environment="NO_PROXY=127.0.0.0/8,127.20.0.0/16,192.168.1.0/24"
# systemctl daemon-reload
# systemctl start docker
# systemctl enable docker
# systemctl enable kubelet
# echo 1 >/proc/sys/net/bridge/bridge-nf-call-iptables
# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
六、集群初始化
在serverA
# export no_proxy=192.168.1.102
# kubeadm --help
# kubeadm init --help
# kubeadm init --kubernetes-version=v1.11.2 \
--apiserver-advertise-address=192.168.1.102\
--pod-network-cidr=10.244.0.0/16\
--service-cidr=10.96.0.0/12 \
--ignore-preflight-errors=Swap
# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/config
# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# systemctl status kubelet
七、node节点加入集群
在serverB
# export no_proxy=192.168.1.102
# kubeadm --help
# kubeadm join --help
# kubeadm join 192.168.1.102:6443 \
--token xmacxe.xemyz987biqchbp6 \
--discovery-token-ca-cert-hash sha256:166b854a63b6a29f6267e6ca3de4ccc73b095a9aba1ac21ef4ebfe4fa163a762 \
--ignore-preflight-errors=Swap
# systemctl status kubelet
# docker images
八、检查集群状态
在serverA
# docker images
# kubectl get nodes -o wide
# kubectl get pod -n kube-system -o wide