其实本节的文章我在很久之前就已经发过了一次,但不够详细,层次不轻。我今天部署的时候看的够呛( 虽然也是部署成功了) ,也算是对以前的坑,做个忏悔吧。本文可能会比较boring,但请相信这并不是我的本意。这一定是最精简的笔记之一,相信我这绝对不是混水。
本文主要分三大部分,他们分别是系统初始化、安装docker、安装Kubernetes,测试验证与删库跑路
系统初始化请注意后面的单词all,代表所有(master、node)
Master:仅在master上
node: 仅在node上
关闭防火墙(all
)1 2 3 4 5 6 systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
效果如下
关闭selinux(all
)1 2 3 4 5 setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config
关闭swap(all
)1 2 3 4 5 6 7 swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab systemctl stop firewalld && setenforce 0 && swapoff -a && systemctl status firewalld
设置主机名称(all
)1 2 3 4 # 设置名称(k8s-m-1)忽略大写字母 hostnamectl set-hostname master # 验证 hostname
时间同步(All
)1 yum install -y ntpdate && ntpdate time.windows.com
在Master
添加Hostname(master
)1 2 3 4 5 6 7 8 9 10 11 12 cat >> /etc/hosts << EOF masterIp master node1Ip node1 node2Ip node2 EOF cat >> /etc/hosts << EOF 192.168.50.182 master 192.168.50.252 node EOF
验证,此时ping node
, 看是否能ping通
将桥接的IPV4 流量传递到iptables的链(all
)1 2 3 4 5 6 7 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF sysctl --system
安装Docker 删除docker(可选)1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine sudo yum install -y yum-utils wget https:/mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-18.06.1.ce-3.e17
安装docker1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io docker --version sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors" : ["https://etdea28s.mirror.aliyuncs.com" ] } EOF sudo systemctl daemon-reload sudo systemctl enable docker systemctl restart docker
验证docker镜像加速
在终端上输入docker info
,效果图如下
完成~
安装Kubernetes 配置阿里镜像源(all)1 2 3 4 5 6 7 8 9 cat > /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
安装 kubectl kubelet kubeadm(all
)1 2 3 4 5 6 7 echo "exclude=kube*" >> /etc/yum.confyum install -y kubectl kubelet kubeadm --disableexcludes=kubernetes systemctl enable kubelet
kubeadm初始化(Master
)1 2 3 4 5 6 7 8 9 10 11 12 kubeadm init \ --apiserver-advertise-address=masterIp \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.10.0.0/16 \ --pod-network-cidr=10.122.0.0/16 kubeadm init \ --apiserver-advertise-address=192.168.50.182 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16
如果没有Error,即kubeadm开始初始化成功
等上几分钟,初始化成功,如下图
开启集群(master)
1 2 3 4 5 6 7 mkdir -p $HOME /.kubesudo cp -i /etc/kubernetes/admin.conf $HOME /.kube/config sudo chown $(id -u):$(id -g) $HOME /.kube/config kubectl get node
节点加入集群(node)
1 2 3 kubeadm join 192.168.50.182:6443 --token 7t70cl.hr22v89g7wkqojdf \ --discovery-token-ca-cert-hash sha256:d0541c10506744981838a7d4ce504eb69d28fdcfc8e1261373505c42047be33f
这个是初始化完成后,系统给的。请以自己输出为准
1 2 # 默认token24hour后过期,获取新token命令如下: kubeadm token create --print-join-command
部署CNI网络组件
1 2 3 4 5 echo "199.232.28.133 raw.githubusercontent.com" >> /etc/hostskubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
1 2 3 4 # 开启IPVS,修改ConfigMap的kube-system/kube-proxy中的模式为ipvs kubectl edit cm kube-proxy -n kube-system # 将空的data -> ipvs -> mode中替换如下 mode: "ipvs"
此时已经全部就绪了,如下
验证测试1 2 3 4 5 6 7 8 9 kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type =NodePort kubectl get pod,svc kubectl get all -n kube-system
部署成功示意图
向外暴露随机端口
访问集群中任意一个ip
完成~
补充,删除部署的服务
1 2 3 kubectl get deployment # 我们只需要删除对应的deploy 即可 kubectl delete deployment nginx
删除成功后,已经找不到nginx的影子,完成
总结本节我们对使用kubeadm
工具快速搭建搭建了Kubernetes的集群,系统初始化,记得关闭防火墙、分区等哦。
如果对你有帮助,感觉不错。可以推荐给朋友哦,让他拿着笔记部署,怎一个香字了得,加油,冲冲冲~