软件版本
go: 1.9.4
docker: 1.13.1
kubernetes: 1.10.3
kubernetes-kubeadm: 1.10.3
网络环境
172.28.7.238: 本地源、本地registry, 可以访问外网
172.28.4.105:master、node
172.28.4.106:node
下载源
所有待安装节点上,下载源:
参照:下载源
安装docker
所有待安装节点上,安装docker
安装kubernetes
在1.10.0之后的版本不再是kubelet、kubeadm、kubectl软件名,而需要安装kubernetes、 kubernetes-kubeadm,而kubernetes包括了kubelet、kubectl、kube-apiserver、kube-proxy、kube-scheduler,kubernetes-kubeadm就是kubeadm
在所有节点上安装kubelet、kubeadm、kubectl
kubelet 运行在 Cluster 所有节点上,负责启动 Pod 和容器。
kubeadm 用于初始化 Cluster。
kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。
selinux 设置
|
|
配置内核
|
|
设置免密登陆
所有节点互信
配置/etc/hosts 文件
所有节点的/etc/hosts文件都修改
配置镜像加速器
172.28.7.238:5000 是我搭建的本地registry,详细过程参考:
docker-搭建-本地-registry
所有节点都添加:
启动docker与kubelet
|
|
这里查看/var/log/messages 会发现kubelet 日志有错误,这里不用管,因为kubelet还没有初始化。如果这里不启动,后面初始化会卡主。
本地registry 镜像获取
如果使用外网registry,可以省略该步骤
在172.28.7.238上执行:
把从外网下载的镜像上传到本地的registry
下载镜像
所有k8s节点(172.28.0.105、172.28.0.106)执行:
从本地registry下载镜像到k8s节点,并重命名为 k8s.gcr.io 开头的镜像,如果不是 k8s.gcr.io 开头,则会从google下载
把这三个镜像tag版本重新打为1.14.8
下载flannel镜像
在172.28.7.238上执行:
下载flannel镜像,并上传到本地registry。
下载kube-flannel.yml ,并scp到所有的k8s节点
初始化kubelet
在master(172.28.4.105)执行:
注意:这里必须指定–kubernetes-version,不然会从google下载最新版本。
保存后面这段输出到文本,以后会用到。
–apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。
–pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 –pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为后面将使用 flannel 网络方案,必须设置成这个 CIDR。
配置认证信息
|
|
安装 flannel 网络插件
在所有k8s节点上执行:
查看状态
在master节点上执行:
让 master 成为pod
默认情况下,出于安全的考虑,并不会在主节点上运行pod,如果你想在主节点上运行pod,比如:运行一个单机版的kubernetes集群时,可运行下面的命令
加入节点
在非master节点(172.28.4.106)上执行(该命令是在master上执行init后保存的那段命令):
正常情况,到master执行:
kubectl get nodes 就能看到该节点了
kubectl get pods –all-namespaces
删除操作
|
|
遇到的问题
The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决方法:
引入环境变量:export KUBECONFIG=/etc/kubernetes/admin.conf新加节点Unable to update cni config: No networks found in /etc/cni/net.d
解决方法:
从别的节点拷贝到/etc/cni/net.d/10-flannel.conf
cat /etc/cni/net.d/10-flannel.conf:
{
“name”: “cbr0”,
“type”: “flannel”,
“delegate”: {
“isDefaultGateway”: true
}
}failed to set bridge addr: “cni0” already has an IP address different from 10.244.2.1/24
解决方法:
kubeadm reset
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
然后执行kubectl join 或者kubectl init等操作