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
设置开机启动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
安装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
然后执行
# 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
输出结果:
记住这里的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
验证集群,在master节点上,运行命令:
# kubectl get nodes
安装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
查看服务情况(输出很多)
# 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}')
执行命令
# kubectl proxy
登陆地址:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
至此,集群部署完成。写作不易,您的鼓励是我前进的动力。