kubeadm方式部署k8s
一、操作系统初始化1.关闭防火墙(master和node都需要执行)systemctl disable firewalld2.关闭seliunx(master和node都需要执行)sed -i 's/enforcing/disabled/' /etc/selinux/config3.关闭swap交换分区(master和node都需要执行)sed -ri 's/.*swap.*/#&' /e
一、操作系统初始化
1.关闭防火墙(master和node都需要执行)。
systemctl disable firewalld
2.关闭seliunx(master和node都需要执行)。
sed -i 's/enforcing/disabled/' /etc/selinux/config
3.关闭swap交换分区(master和node都需要执行)。
sed -ri 's/.*swap.*/#&' /etc/fstab
4.根据规划设置主机名(master和node都需要执行)。
hostnamectl set-hostname 主机名
5.master机器中添加hosts(所有节点都添加)。
cat >> /etc/hosts <<EOF
192.168.3.2 amaris-master1
192.168.3.1 amaris-node1
192.168.3.4 amaris-node2
EOF
6.将桥接的IPV4流量传递到iptables的链(master和node都需要执行)。
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
此命令使上面的命令生效。
sysctl --system
7.同步所有机器时间(master和node都需要执行)。
yum install ntpdate -y
ntpdate time.windows.com
二、安装docker(每台机器都需要安装)
1.安装docker,自己想下载别的版本加上版本号就行。
docker -y install docker
给docker添加开机自启并且启动docker。
systemctl enable docker && systemctl start docker
2.修改阿里云镜像,给daemon.json添加阿里云镜像。
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
三、添加阿里云yum软件源(所有机器都需配置)
1、在/etc/yum.repos.d/目录下创建文件kubernetes.repo
vim /etc/yum.repos.d/kubernetes.repo
文件内容:
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enableed=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
四、安装kubeadm,kubelet,kubectl
所有机器都需安装:
yum -y install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet
五、部署kubernetes Master
1.在master机器上执行一下初始化kubeadm命令:
这里的命令每一行的含义分别是:
(1)–apiserver-advertise-address:设置master节点的ip
(2)–image-repository registry.aliyuncs.com/google_containers:设置镜像源地址
(3)–kubernetes-version v1.18.0:设置kubernetes版本
(4)–service-cidr=10.96.0.0/12:设置svc网络
(5)–pod-network-cidr=10.244.0.0/16:设置pod网络
执行的时候记得将ip换成自己的!
kubeadm init --apiserver-advertise-address=192.168.3.2 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
执行结果:
看到下图这句话,说明成功了。
2.执行安装提示中的命令:
(1)在master节点中执行“1”命令
(2)在node节点中执行“2”命令
这里命令的作用其实就是把node节点添加到当前的集群里。所以命令2在node节点执行。
“2”号命令默认token有限期为24小时,当过期之后,该token就不可用了,需重新创建token,命令如下:
kubeadm token create --print-join-command
(3)在master节点执行以下命令可查看当前master节点管理的node节点:
kubectl get nodes
(4)部署CNI网络插件
如果此执行此命令显示无法连接到主机,那么可以在浏览器中打开这个网址,然后将里面的内容复制,放到一个文件中,保存之后修改文件名为kube-flannel.yml,最后再用kubectl apply -f kube-flannel.yml
命令执行此文件就行。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
这里需要特别注意:
由于部分镜像是从国外下载的,网络出现一点儿问题,都会让镜像下载失败,导致下载的镜像版本与yml文件中镜像版本不一致,影响node节点一直无法就绪!尤其是这个flannel镜像!
我的解决办法是:首先用公司国外的机器,先将自己所需版本的镜像下载下来,然后传到国内机器的dockerhub上,再从自己的机器上去下载国内机器的镜像,这样速度会非常快。当然也可以将镜像打包后上传到自己的机器。
但是一定要注意镜像版本,tag问题!yml文件中的镜像版本也要确认好!但是尽量不要动yml的配置,换镜像就好!还需要注意,falnnel这个网络插件需要两个镜像支撑(如下图),并且,无论有几个节点,都要有这两个镜像,虽然配置文件的规则配置了镜像会自动同步,但是我自己在配置的时候就遇到了没同步过去的问题,导致网络插件一直是未就绪状态,最后手动将镜像导入到其他节点之后才得以解决!坑给大家踩了,兄弟们别再掉下去了!
六、测试kubernetes集群
1.在集群中创建一个pod,验证是否正常运行,这里以nginx为例,会自动联网下载。
kubectl create deployment nginx --image=nginx
未下载完成的状态显示如下:
下载完成的状态显示如下:
2.为pod设置对外开放端口,端口号会自动生成。
kubectl expose deployment nginx --port=80 --type=NodePort
3.查看pod,svc状态,上一部命令自动设置的端口号也可以用这条命令查看。
kubectl get pod,svc
七、浏览器测试是否可以访问
使用自己节点ip+生成的端口号在浏览器测试就行。
更多推荐
所有评论(0)