kubeadm方式部署k8s

一、操作系统初始化

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 <.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

执行结果:
看到下图这句话,说明成功了。
kubeadm方式部署k8s_第1张图片
2.执行安装提示中的命令:
(1)在master节点中执行“1”命令
(2)在node节点中执行“2”命令
这里命令的作用其实就是把node节点添加到当前的集群里。所以命令2在node节点执行。
“2”号命令默认token有限期为24小时,当过期之后,该token就不可用了,需重新创建token,命令如下:

kubeadm token create --print-join-command

kubeadm方式部署k8s_第2张图片
(3)在master节点执行以下命令可查看当前master节点管理的node节点:

kubectl get nodes

kubeadm方式部署k8s_第3张图片

(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镜像!
kubeadm方式部署k8s_第4张图片

kubeadm方式部署k8s_第5张图片
我的解决办法是:首先用公司国外的机器,先将自己所需版本的镜像下载下来,然后传到国内机器的dockerhub上,再从自己的机器上去下载国内机器的镜像,这样速度会非常快。当然也可以将镜像打包后上传到自己的机器。
但是一定要注意镜像版本,tag问题!yml文件中的镜像版本也要确认好!但是尽量不要动yml的配置,换镜像就好!还需要注意,falnnel这个网络插件需要两个镜像支撑(如下图),并且,无论有几个节点,都要有这两个镜像,虽然配置文件的规则配置了镜像会自动同步,但是我自己在配置的时候就遇到了没同步过去的问题,导致网络插件一直是未就绪状态,最后手动将镜像导入到其他节点之后才得以解决!坑给大家踩了,兄弟们别再掉下去了!
kubeadm方式部署k8s_第6张图片

六、测试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

kubeadm方式部署k8s_第7张图片

七、浏览器测试是否可以访问

使用自己节点ip+生成的端口号在浏览器测试就行。
kubeadm方式部署k8s_第8张图片

你可能感兴趣的:(kubernetes,kubernetes,docker,容器)