虚拟机安装k8s集群部署记录

2,213 阅读2分钟

准备虚拟机环境

1,安装CentOS-7.4-64Bit镜像

2,部署NAT网络,参考节点规划,分配静态ip(参考www.hifreud.com/2018/08/10/…

完成后,主机与虚拟机之间, 虚拟机与虚拟机之间,虚拟机与外部网络都要互通


节点规划

本文准备部署一个 一主两从三节点 Kubernetes集群,整体节点规划如下表所示:

主机名IP角色
k8s-master192.168.233.3k8s主节点
k8s-worker-1192.168.233.4k8s从节点
k8s-worker-2192.168.233.5k8s从节点

以下所有操作基于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