1.安装方式介绍

   裸机搭建 

     裸机搭建一般有两种用方式“kubernetes方式”和“二进制方式”,Kubernetes是一个K8s部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernete集群,二进制方式需将所有组件安装,非常的复杂,所以一般采用kubeadm方式。

第一步:环境准备

<1>【所有节点】设置主机名

# 分别设置主机名
hostnamectl set-hostname k8s-1 --( 主机名 )
# 分别修改 host 文件
vi /etc/hosts
更改完节点后重启虚拟机

<2>【所有节点】关闭干扰服务

需要关闭所有节点的防火墙, selinux dnsmasq swap NetworkManager
# 关闭防火墙,并取消开机启动
systemctl disable --now firewalld
# 关闭 dnsmasq ,并取消开机启动
systemctl disable --now dnsmasq
# 关闭 NetworkManager ,并取消开机启动 --- 注意,如果是 centos8 就不用关闭了,此处用 centos7 ,需要关闭
systemctl disable --now NetworkManager
# 关闭 selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/conŨ g
# 临时停止关闭 swap
swapoff -a && sysctl -w vm.swappiness=0
#永久关闭,为了以后重启都不会开启了
vi /etc/fstab
注释掉 /dev/mapper/centos-swap swap swap defaults 0 0
或者
UUID=bdb8b148-c906-4108-bd85-0391f977feef swap swap defaults 0 0

<3>【所有节点】同步时钟

如果每个节点时间不同步相互之间无法连接
# 安装软件 ntpdate
yum -y install ntpdate
# 同步时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asiz/Shanghai' >/etc/timezone
# 设置时间服务器【此处用 aliyun
ntpdate time2.aliyun.com
# 设置自动同步时间
crontab -e # 开启任务设置,将下面的内容设置进去
-------- 下面是设置的内容【和 vi 操作一样】 -------
0 */5 * * * ntpdate time2.aliyun.com # 5 分钟同步一次时间,然后 wq 保存,可以通过 crontab-l 查看已配置的定时任务

<4>【所有节点】将桥接的 IPv4 流量传递到 iptables

桥接的 IPv4 流量传递到 iptables 链在 Kubernetes 中的作用主要包括以下方面:
1. 网络策略实现: Kubernetes 中的网络策略允许你定义 Pod 之间和 Pod 与外部通信的规则。通过将桥接的
IPv4 流量传递到 iptables 链,可以在 iptables 规则中定义网络策略,例如允许或拒绝特定 Pod 之间的通信、
限制源 / 目标 IP 、端口或协议等。
2. 服务代理和负载均衡: iptables Kubernetes 中用于服务代理和负载均衡。 Kubernetes Service 抽象背后
iptables 规则,它们使得从集群内部访问服务更为便捷,同时提供负载均衡功能。
3. 流量管理和路由: 通过 iptables 可以对进出 Pod 的流量进行管理和路由。这包括在节点之间路由流量、 NAT
转发、 SNAT DNAT 等操作,确保流量按照预期的方式在集群内外传输。
4. 网络隔离和安全性: iptables 允许在 Kubernetes 中实现网络隔离和安全策略。通过定义适当的规则,可以 限制 Pod 之间的通信,增强安全性并确保网络的完整性。
Kubernetes 中, CNI 插件负责配置网络和实现网络策略。这些插件可以使用 iptables 或其他技术来管理容器间
通信。通过将桥接的 IPv4 流量传递到 iptables 链, Kubernetes 可以利用 iptables 提供的丰富功能来管理容器间
的流量、实施网络策略并确保网络的可用性和安全性。
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 执行生效
sysctl --system

<5>所有节点安装Docker/kubeadm/kubelet

注意docker版本和安装k8s有对应关系,此处用docker-ce-18.06.1
GitHub 可以查看所有 Kubernetets 版本信息:
https://github.com/kubernetes/kubernetes/releases
Docker安装
yum install -y wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker
systemctl start docker
docker --version
给docker添加阿里云源,这样下载会快
# 写入镜像加速
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://5n5qtc03.mirror.aliyuncs.com"]
}
EOF
# 重启 docker 守护进程
systemctl daemon-reload
# 重启 docker 服务
systemctl restart docker
添加yum源,用于安装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

 安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 # 下载 kubeadm kubelet kubectl ,版本 1.18.0
systemctl enable kubelet # 开机自动启动 kubelet

第二步:Master节点安装

<1>、kubeadm初始化master节点

kubeadm init \
--apiserver-advertise-address=192.168.174.140 \
--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 初始化完毕后,最后生成一句 “kubeadm join” 一定要保存好这个内容,因为这是用 于向k8s 中加入节点的命令。

<2>、使用kubectl工具

kubectl工具可以查看集群信息
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/conŨ g
sudo chown $(id -u):$(id -g) $HOME/.kube/conŨ g
------------ 上面在 master 节点中只要运行一次即可 -----------
kubectl get nodes --- 查看 node 情况

<3>、安装Pod网络插件

vi kube-ũ annel.yml
注意: kube-flannel 和安装 k8s 版本有关联的,如果更改 k8s 版本了需要去网上自己找可以用 kube-flannel 配置
具体内容看附件
安装完成后
kubectl apply -f kube- flannel.yml --- kubectl apply 设置一个 yml
kubectl get pods -n kube-system --- 查看 pod 的运行情况
# 再次查看 node 节点信息
kubectl get nodes

 第三步:Node节点安装

使用第二步、<2>中的那句kubeadm join” 就可以将node节点加载到集群中

第四步:测试集群【master进行】

Kubernetes 集群中创建一个 pod tomcat 】,验证是否正常运行:
kubectl create deployment tomcat --image=tomcat:8.5.23 --- 拉取 tomcat
kubectl get pod --- 查看 pod 拉取情况
kubectl expose deployment tomcat --port=8080 --type=NodePort --- 开启一个服务,暴露 8080 端口
kubectl get pod,svc --- 查看服务情况

查看运行情况

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐