kubernetes二进制部署

一:虚拟机准备(安装时确保cpu至少为两核,否则后面会出现错误)

二: Docker安装(# 代表root用户)

虚拟机地址

虚拟机名

192.168.1.14

master

192.168.1.15

slave1

192.168.1.16

slave2

首先根据自己的三台虚拟机ip,将对应的ip和虚拟机名写入/etc/hosts文件。
如果之前安装过docker,可以删除旧版本,来下载新版本。

# yum remove -y docker

为了方便添加软件源,以及支持devicemapper存储类型,在root用户下执行以下命令:

# yum update
 # yum install -y yum-utils device-mapper-persistent-data lvm2

添加docker稳定版本的yum软件源:

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

之后更新yum软件源,并安装Docker

# yum update
# yum install -y docker-ce docker-ce-cli containerd.io

下载过程可能有点慢,还需耐心等待。

安装完成之后,启动Docker

# systemctl start docker

验证docker是否启动成功

# service docker status

让 centos 7 支持 虚拟化 centos7搭建虚拟机_Docker


设置开机启动Docker

# systemctl enable docker && systemctl restart docker && service docker status
配置Docker启动参数

在三台虚拟机中分别操作

# vim /etc/docker/daemon.json

之后写入:

{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重启Docker

# systemctl daemon-reload
# systemctl restart docker

(Docker安装至此结束)

三 K8S 集群搭建

由于centos7默认启用防火墙,而Kubernetes的Master与工作节点(Node)之间会有大量的网络通信,安全的做法是在防火墙配置各组件需要相互通信的端口号。由于现在实在试验阶段,可以在安全的内部网络中关闭防火墙服务。

# systemctl stop firewalld
# systemctl disable firewalld

查看防火墙状态

# firewall-cmd --state

建议禁用SELinux,让容器可以读取主机文件系统。即修改/etc/sysconfig/selinux,将SELINUX=enforcing修改为SELINUX=disabled,之后重启Linux。

关闭交换空间

# swapoff -a
# yes | cp /etc/fstab /etc/fstab_bak
# cat /etc/fstab_bak |grep -v swap > /etc/fstab

配置iptable管理ipv4/6

# vim /etc/sysctl.d/k8s.conf

写入:

# net.bridge.bridge-nf-call-ip6tables = 1
# net.bridge.bridge-nf-call-iptables = 1

使配置生效:

# sysctl --system

让 centos 7 支持 虚拟化 centos7搭建虚拟机_Docker_02

安装kubeadm套件

编辑源

# vim /etc/yum.repos.d/kubernetes.repo

写入:

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

下载:

# yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0

让 centos 7 支持 虚拟化 centos7搭建虚拟机_vim_03


然后执行

# systemctl enable kubelet
集群初始化(–apiserver-advertise-address是master的ip,以下命令均在master节点执行)
# kubeadm init --apiserver-advertise-address=192.168.1.14 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

输出结果:

让 centos 7 支持 虚拟化 centos7搭建虚拟机_Docker_04


记住这里的token和发现密钥。

接下来执行如下命令(该命令在输出结果中有)

# mkdir -p $HOME/.kube
 # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 # sudo chown $(id -u):$(id -g) $HOME/.kube/config

另外需要注意的是,需要对集群进行网络部署,方案多种,这里选择flannel(master部署)

# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
集群加入节点

在其他两个节点,以root用户权限进行:

# kubeadm join 192.168.1.14:6443 --token 5yhtpw.9561idijj00spgsl --discovery-token-ca-cert-hash sha256:7d26294c15ad602877c9b093c743e59308817a24ae6072148682480b6e47daa0

让 centos 7 支持 虚拟化 centos7搭建虚拟机_让 centos 7 支持 虚拟化_05


让 centos 7 支持 虚拟化 centos7搭建虚拟机_vim_06


验证集群,在master节点上,运行命令:

# kubectl get nodes

让 centos 7 支持 虚拟化 centos7搭建虚拟机_kubernetes_07

安装k8s仪表盘

k8s仪表盘一稳定版为主,以下所有命令都是在master节点运行:

# wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

之后打开下载的kubernetes-dashboard.yaml文件,将其中的image值改为

lizhenliang/kubernetes-dashboard-amd64:v1.10.1

之后运行命令:

# kubectl apply -f kubernetes-dashboard.yaml
# kubectl get pod -A -o wide |grep dash
# kubectl get svc -A -o wide |grep dash

让 centos 7 支持 虚拟化 centos7搭建虚拟机_让 centos 7 支持 虚拟化_08


查看服务情况(输出很多)

# kubectl -n kube-system describe pod

查看docker启动情况

# docker ps

之后创建登陆账户
因为没有创建用户,所以无法进行登录。你可以使用以下命令进行创建。

# kubectl create serviceaccount dashboard-admin -n kube-system
# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

接下来使用下面的命令生成登录Token

# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

让 centos 7 支持 虚拟化 centos7搭建虚拟机_kubernetes_09


执行命令

# kubectl proxy

登陆地址:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

让 centos 7 支持 虚拟化 centos7搭建虚拟机_让 centos 7 支持 虚拟化_10


至此,集群部署完成。写作不易,您的鼓励是我前进的动力。