1.安装环境
master 192.168.1.105
node1 192.168.1.106
node2 192.168.1.107
操作系统版本
CentOS Linux release 7.1.1503
内核版本
3.10.0-229.el7.x86_64
软件版本
kubeadm:v1.9.0
kubeadm为kubernetes官方推荐的自动化部署工具,它将kubernetes的组件以pod的形式部署在master和node节点上,并自动完成证书认证等操作。
2.安装
所有机器上进行的操作
绑定hosts,将master节点与node节点互信,使master节点能免密登录node节点(此处省略)
关闭防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disable
setenforce 0
关闭swap,kubeadm不支持swap
swapoff -a
vim /etc/fstab 注释掉swap那一行
配置系统路由参数,防止kubeadm报路由警告
在【/etc/sysctl.d/】目录下新建一个Kubernetes的配置文件【kubernetes.conf】,并写入如下内容:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1
运行如下命令使配置生效
sysctl --system
上传软件包到服务器:
链接:https://pan.baidu.com/s/1QuFRtv27ZNLywtUpNPTHxw
提取码:6yom
安装kubelet kubeadm kubectl包
yum install -y ./kubectl-1.9.0-0.x86_64.rpm
yum install -y ./socat-1.7.3.2-2.el7.x86_64.rpm
yum install -y ./kubelet-1.9.9-9.x86_64.rpm ./kubernetes-cni-0.6.0-0.x86_64.rpm
yum install -y ./kubeadm-1.9.0-0.x86_64.rpm
安装docker
yum install -y docker
启动docker
systemctl enable docker && systemctl start docker
导入镜像包,注意路径
docker load -i /opt/k8s_packages/k8s_images/docker_images/etcd-amd64_v3.1.10.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/flannel:v0.9.1-amd64.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/k8s-dns-dnsmasq-nanny-amd64_v1.14.7.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/k8s-dns-kube-dns-amd64_1.14.7.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/k8s-dns-sidecar-amd64_1.14.7.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/kube-apiserver-amd64_v1.9.0.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/kube-controller-manager-amd64_v1.9.0.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/kube-proxy-amd64_v1.9.0.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/kube-scheduler-amd64_v1.9.0.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/pause-amd64_3.0.tar
docker load -i /opt/k8s_packages/k8s_images/docker_images/kubernetes-dashboard_v1.8.1.tar
master节点操作
修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
修改:
--cgroup-driver=cgroupfs
启动kubelet(因为还没初始化,所以不能成功启动,之后再启动一次)
systemctl enable kubelet && systemctl start kubelet
初始化master
kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.172.0.0/16
master初始化成功后注意将kubeadm join xxx保存下来,等下node节点需要使用。如果忘记了,可以在master上通过kubeadm token list得到。
默认token 24小时就会过期,后续的机器要加入集群需要使用以下命令重新生成token
#kubeadm token create
获取ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
然后重新拼一个
配置下环境变量,让root用户能使用kubelet控制集群
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
安装配置flannel网络(文件中的网段要与初始化时的一致)
vim /opt/k8s_packages/k8s_images/kube-flannel.yml
修改network项
"Network": "10.172.0.0/16",
执行
kubectl create -f /opt/k8s_packages/k8s_images/kube-flannel.yml
node节点操作
1.kubelet
修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
修改:
--cgroup-driver=cgroupfs
启动kubelet
systemctl enable kubelet && systemctl start kubelet
2.添加节点
使用刚刚kubeadm后的kubeadm join --xxx
kubeadm join --token 8f0b80.d30b2a5d2bd50bad 192.168.1.105:6443 --discovery-token-ca-cert-hash sha256:1eca70c218aaef6e2a1bf4aab23c71873dab87f743d2210c2f509a7537b5e8dc
在master节点使用kubectl get nodes能查看到节点状态,至此集群部署已经基本完成。
#如果是重新添加同一个节点需要先执行:kubeadm reset