通过kubeadm部署k8s

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(虚拟化)