准备虚拟机环境
1,安装CentOS-7.4-64Bit镜像
2,部署NAT网络,参考节点规划,分配静态ip(参考www.hifreud.com/2018/08/10/…)
完成后,主机与虚拟机之间, 虚拟机与虚拟机之间,虚拟机与外部网络都要互通
节点规划
本文准备部署一个 一主两从 的 三节点 Kubernetes集群,整体节点规划如下表所示:
| 主机名 | IP | 角色 |
|---|---|---|
| k8s-master | 192.168.233.3 | k8s主节点 |
| k8s-worker-1 | 192.168.233.4 | k8s从节点 |
| k8s-worker-2 | 192.168.233.5 | k8s从节点 |
以下所有操作基于root用户
准备工作
所有节点关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service禁用SELINUX
setenforce 0
vim /etc/selinux/config
SELINUX=disabled所有节点永久关闭 swap
vim /etc/fstab
注释掉swap那一行设置iptables
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1设置所有节点主机名
hostnamectl --static set-hostname k8s-master
hostnamectl --static set-hostname k8s-worker-1
hostnamectl --static set-hostname k8s-worker-2所有节点 主机名/IP加入 hosts解析
编辑 /etc/hosts文件,加入以下内容:
192.168.233.3 k8s-master
192.168.233.4 k8s-worker-1
192.168.233.5 k8s-worker-2为了方便配置生效,虚拟机重启
虚拟机拍摄快照(方便恢复到此状态)
安装
安装准备
为了方便添加软件源,支持 devicemapper 存储类型,安装如下软件包
yum install -y yum-utils \ device-mapper-persistent-data \ lvm2添加 yum 软件源
添加 Docker 稳定版本的 yum 软件源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装 Docker
虚拟机中可能有docker-ce-selinux 版本过低,因此执行
yum -y install https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm安装 Docker。
yum -y install docker-ce-17.03.2.ce添加加速器到配置文件
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF启动服务
systemctl daemon-reload
systemctl start docker
systemctl enable docker.service打开iptables内生的桥接相关功能,已经默认开启了,没开启的自行开启
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
cat /proc/sys/net/bridge/bridge-nf-call-iptables安装 Kubernetes
kubeadm使用yum命令进行安装,使用镜像,可以安装成功
cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF修改网络配置
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF修改完成后执行sysctl --system应用。
安装kubelet、kubeadm、kubectl
kubelet:负责管理pods和它们上面的容器,维护容器的生命周期
kubeadm:安装K8S工具
kubectl:K8S命令行工具
yum -y install kubeadm-1.13.0 kubelet-1.13.0 kubectl-1.13.0 kubernetes-cni-0.6.0 --disableexcludes=kubernetes修改配置文件
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
KUBE_PROXY=MODE=ipvs设为开机自启
systemctl enable kubelet.service启动kubelet
systemctl start kubelet.service准备kubeadm 1.1 配置文件
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
controllerManager:
extraArgs:
horizontal-pod-autoscaler-use-rest-clients: "true"
horizontal-pod-autoscaler-sync-period: "10s"
node-monitor-grace-period: "10s"
apiServer:
extraArgs:
runtime-config: "api/all=true"
kubernetesVersion: "stable-1.13"执行
kubeadm init --config kubeadm.yaml成功之后
输出
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each nodeas root:
kubeadm join 192.168.233.3:6443 --token 2t6fi0.g7b6593ifnhxu5na --discovery-token-ca-cert-hash sha256:*******************************************仔细看输出内容,需要先执行输出内容中的
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config这条命令是worker节点加入master节点的命令,先保存起来。(sha256:***************是做了脱敏处理,以实际输出为准)
kubeadm join 192.168.233.3:6443 --token 2t6fi0.g7b6593ifnhxu5na --discovery-token-ca-cert-hash sha256:*******************************************部署网络插件
kubectl apply -f https://git.io/weave-kube-1.6