K8S:Kubeadm搭建K8S

目录

一、部署步骤

二、实验环境

1、所有节点,关闭防火墙规则,关闭selinux,关闭swap交换

2、修改主机名,并写入三台服务器的host中

3、调整内核参数

4、所有节点安装Docker

5、所有节点配置K8S源

6、所有节点安装kubeadm,kubelet和kubectl

7、部署 kubernetes Master 节点(master 节点上执行)

8、token制作

9、K8S-node 节点加入 master 节点(两个 node 执行)

10、master节点安装部署pod网络插件(flannel)

11、给node节点添加标签

12、master检查

13、查询服务是否正常

14、测试 k8s 集群,在集群中创建一个 pod,验证是否能正常运行


一、部署步骤

在所有节点上安装Docker和kubeadm
部署Kubernetes Master
部署容器网络插件
部署 Kubernetes Node,将节点加入Kubernetes集群中
部署 Dashboard Web 页面,可视化查看Kubernetes资源

二、实验环境

服务器类型 IP地址
master 192.168.62.50
node01 192.168.62.60
node02 192.168.62.70

1、所有节点,关闭防火墙规则,关闭selinux,关闭swap交换

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a		#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab	
#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果

K8S:Kubeadm搭建K8S_第1张图片

PS:此处三台机器操作一致

2、修改主机名,并写入三台服务器的host中

cat >> /etc/hosts << EOF
192.168.62.50 master
192.168.62.60 node01
192.168.62.70 node02
EOF

K8S:Kubeadm搭建K8S_第2张图片

 K8S:Kubeadm搭建K8S_第3张图片

3、调整内核参数

将桥接的 IPV4 流量传递到 iptables 链

#调整内核参数

cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

#加载参数
sysctl --system  

K8S:Kubeadm搭建K8S_第4张图片

K8S:Kubeadm搭建K8S_第5张图片

4、所有节点安装Docker

yum install -y yum-utils device-mapper-persistent-data lvm2 
#下载环境
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
#配置阿里源
yum install -y docker-ce docker-ce-cli containerd.io

mkdir /etc/docker
cat > /etc/docker/daemon.json <

PS:此步操作皆是三条机器都要进行

K8S:Kubeadm搭建K8S_第6张图片

K8S:Kubeadm搭建K8S_第7张图片

K8S:Kubeadm搭建K8S_第8张图片

K8S:Kubeadm搭建K8S_第9张图片

5、所有节点配置K8S源

#定义kubernetes源
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=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

K8S:Kubeadm搭建K8S_第10张图片

6、所有节点安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3

#开机自启kubelet
systemctl enable kubelet.service
systemctl start kubelet
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

K8S:Kubeadm搭建K8S_第11张图片

7、部署 kubernetes Master 节点(master 节点上执行)

wget http://120.78.77.38/file/kube-flannel.yaml
vim kube-flannel.yaml

K8S:Kubeadm搭建K8S_第12张图片

kubeadm init \
--apiserver-advertise-address=192.168.62.50 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.3 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

 参数说明

kubeadm init \
--apiserver-advertise-address=10.0.0.116 \                  
#指定master监听的地址,修改为自己的master地址

--image-repository registry.aliyuncs.com/google_containers \   
#指定为aliyun的下载源,最好用国内的

--kubernetes-version v1.18.0 \                 
#指定k8s版本,1.18.0版本比较稳定

--service-cidr=10.96.0.0/12 \                  
#设置集群内部的网络

--pod-network-cidr=10.244.0.0/16                
#设置pod的网络
# service-cidr 和 pod-network-cidr 最好就用这个,不然需要修改后面的 kube-flannel.yaml 文件

K8S:Kubeadm搭建K8S_第13张图片

K8S:Kubeadm搭建K8S_第14张图片

执行以下命令可使用kubectl管理工具

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

K8S:Kubeadm搭建K8S_第15张图片

8、token制作

node 节点加入集群需要生成的 token,token 有效期为 24 小时,过期需要重新创建
创建命令为

kubeadm token create --print-join-command

9、K8S-node 节点加入 master 节点(两个 node 执行)

获取前面创建好的token令牌
kubeadm join 192.168.62.50:6443 --token 7j53ls.pgn8zzmp6g9ivfji --discovery-token-ca-cert-hash sha256:9800591bf9398bccf1c0430a7c403cfb5b48177b485dd7bca81b67b33bf5c47e

K8S:Kubeadm搭建K8S_第16张图片

K8S:Kubeadm搭建K8S_第17张图片

10、master节点安装部署pod网络插件(flannel)

#国外网站
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#国内网站
wget http://120.78.77.38/file/kube-flannel.yaml


或者
kubectl apply -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

K8S:Kubeadm搭建K8S_第18张图片

#安装
kubectl apply -f kube-flannel.yaml

K8S:Kubeadm搭建K8S_第19张图片

K8S:Kubeadm搭建K8S_第20张图片

K8S:Kubeadm搭建K8S_第21张图片

可能会遇见的报错

K8S:Kubeadm搭建K8S_第22张图片

解决 

#修改 flannel 插件文件,这个版本比较低,高版本 k8s 尽量选择一些高一些的版本 flannel
sed -i -r "s#quay.io/coreos/flannel:.*-amd64#lizhenliang/flannel:v0.12.0-amd64#g" kube-flannel.yaml
kubectl apply -f kube-flannel.yaml
kubectl get pods -n kube-system
kubectl get node  #部署好网络插件,node 准备就绪

K8S:Kubeadm搭建K8S_第23张图片

  没有报错就跳过

11、给node节点添加标签

kubectl label node node01 node-role.kubernetes.io/node=node1
kubectl label node node02 node-role.kubernetes.io/node=node2
#获取节点信息
kubectl get nodes

K8S:Kubeadm搭建K8S_第24张图片

12、master检查

#查询master是否正常 
kubectl get cs 
#若为unhealthy 
vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
 #将- --port=0注释掉

K8S:Kubeadm搭建K8S_第25张图片

K8S:Kubeadm搭建K8S_第26张图片

13、查询服务是否正常

监测K8s集群是否正常后,再运行服务部署

#查询所有pod是否正常运行 
kubectl get pods -A 
#查询master是否正常 
kubectl get cs 
#查询node节点是否ready 
kubectl get nodes

K8S:Kubeadm搭建K8S_第27张图片

K8S:Kubeadm搭建K8S_第28张图片

14、测试 k8s 集群,在集群中创建一个 pod,验证是否能正常运行

#部署服务
kubectl create deployment nginx --image=nginx:1.14
#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pods
kubectl get svc(service)
#删除pod与svc
kubectl delete deploy/nginx
kubectl delete svc/nginx

K8S:Kubeadm搭建K8S_第29张图片

K8S:Kubeadm搭建K8S_第30张图片

你可能感兴趣的:(kubernetes,java,运维)