系统初始化
请注意后面的单词all,代表所有(master、node)
Master:仅在master上
node: 仅在node上
关闭防火墙(`all`)
1## 临时关闭 2systemctl stop firewalld 3## 永久关闭 4systemctl disable firewalld 5## 验证防火墙是否关闭 6systemctl status firewalld
效果如下
关闭selinux(`all`)
1# 临时关闭 2setenforce 0 3# 永久 4sed -i 's/enforcing/disabled/' /etc/selinux/config
关闭swap(`all`)
1# 临时 2swapoff -a 3# 永久 4sed -ri 's/.*swap.*/#&/' /etc/fstab 5 6# 一条命令完成所有 7systemctl stop firewalld && setenforce 0 && swapoff -a && systemctl status firewalld
设置主机名称(`all`)
1# 设置名称(k8s-m-1)忽略大写字母 2hostnamectl set-hostname master 3# 验证 4hostname
时间同步(`All`)
1yum install -y ntpdate && ntpdate time.windows.com
在`Master`添加Hostname(`master`)
1# 设置 2cat >> /etc/hosts << EOF 3masterIp master 4node1Ip node1 5node2Ip node2 6EOF 7 8# example 9cat >> /etc/hosts << EOF 10192.168.50.182 master 11192.168.50.252 node 12EOF
验证,此时
ping node
, 看是否能ping通
将桥接的IPV4 流量传递到iptables的链(`all`)
1cat > /etc/sysctl.d/k8s.conf << EOF 2net.bridge.bridge-nf-call-ip6tables = 1 3net.bridge.bridge-nf-call-ip6tables = 1 4EOF 5 6# 生效 7sysctl --system
安装Docker
删除docker(可选)
1# You can use scripts for one click installation,You may need to type enter at the end 2# remove docker 3sudo yum remove docker \ 4 docker-client \ 5 docker-client-latest \ 6 docker-common \ 7 docker-latest \ 8 docker-latest-logrotate \ 9 docker-logrotate \ 10 docker-engine 11# Set up repository 12sudo yum install -y yum-utils 13wget https:/mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 14yum -y install docker-18.06.1.ce-3.e17
安装docker
1# Use Aliyun Docker 2sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3# install docker from yum 4yum install -y docker-ce docker-ce-cli containerd.io 5# cat version 6docker --version 7 8# 配置镜像加速 9sudo mkdir -p /etc/docker 10sudo tee /etc/docker/daemon.json <<-'EOF' 11{ 12 "registry-mirrors": ["https://etdea28s.mirror.aliyuncs.com"] 13} 14EOF 15 16# reload 17sudo systemctl daemon-reload 18# 配置开启自启 19sudo systemctl enable docker 20# start docker 21systemctl restart docker
验证docker镜像加速
在终端上输入docker info
,效果图如下
完成~
安装Kubernetes
配置阿里镜像源(all)
1cat > /etc/yum.repos.d/kubernetes.repo <<EOF 2[kubernetes] 3name=Kubernetes 4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 5enabled=1 6gpgcheck=0 7repo_gpgcheck=1 8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 9EOF
安装 kubectl kubelet kubeadm(`all`)
1# install kubectl kubelet kubeadm 2yum install -y kubectl kubelet kubeadm --disableexcludes=kubernetes 3#--disableexcludes=kubernetes 禁掉除了这个之外的别的仓库 4# set boot on opening computer 5systemctl enable kubelet
kubeadm初始化(`Master`)
1kubeadm init \ 2--apiserver-advertise-address=masterIp \ 3--image-repository registry.aliyuncs.com/google_containers \ 4--service-cidr=10.10.0.0/16 \ 5--pod-network-cidr=10.122.0.0/16 6 7# eg 8kubeadm init \ 9--apiserver-advertise-address=192.168.50.182 \ 10--image-repository registry.aliyuncs.com/google_containers \ 11--service-cidr=10.96.0.0/12 \ 12--pod-network-cidr=10.244.0.0/16
如果没有Error,即kubeadm开始初始化成功
等上几分钟,初始化成功,如下图
开启集群(master)
1mkdir -p $HOME/.kube 2sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 3sudo chown $(id -u):$(id -g) $HOME/.kube/config 4 5# 验证 6kubectl get node 7# 正常打印出信息即,成功
节点加入集群(node)
1# 例如 2kubeadm join 192.168.50.182:6443 --token 7t70cl.hr22v89g7wkqojdf \ 3 --discovery-token-ca-cert-hash sha256:d0541c10506744981838a7d4ce504eb69d28fdcfc8e1261373505c42047be33f
这个是初始化完成后,系统给的。请以自己输出为准
1# 默认token24hour后过期,获取新token命令如下: 2kubeadm token create --print-join-command
部署CNI网络组件
1# 由于是国外的源,国内无法访问。我们需要添加镜像,若存在,则忽略 2echo "199.232.28.133 raw.githubusercontent.com" >> /etc/hosts 3 4# 部署CNI网络组件 5kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
1# 开启IPVS,修改ConfigMap的kube-system/kube-proxy中的模式为ipvs 2kubectl edit cm kube-proxy -n kube-system 3# 将空的data -> ipvs -> mode中替换如下 4mode: "ipvs"
此时已经全部就绪了,如下
验证测试
1# kubectl create deployment NAME --image=image -- [COMMAND] [args...] [options] 2# 简单部署nginx 3kubectl create deployment nginx --image=nginx 4# 对外暴露端口 5kubectl expose deployment nginx --port=80 --type=NodePort 6# 查看状态 7kubectl get pod,svc 8# 查看命名空间 9kubectl get all -n kube-system
部署成功示意图
向外暴露随机端口
访问集群中任意一个ip
完成~
补充,删除部署的服务
1kubectl get deployment 2# 我们只需要删除对应的deploy 即可 3kubectl delete deployment nginx
删除成功后,已经找不到nginx的影子,完成
总结
本节我们对使用kubeadm
工具快速搭建搭建了Kubernetes的集群,系统初始化,记得关闭防火墙、分区等哦。