前言
k8s作为容器编排工具,简化容器管理,提升工作效率而颇受青睐。本文将介绍如何通过kubeadm安装k8s集群。
一.环境准备
Kubenetes支持在物理服务器或虚拟机中运行。这里准备三台安装了centos系统的物理机。
IP地址 | 节点角色 | CPU | Memory | Hostname |
---|---|---|---|---|
172.17.0.12 | master | >=2c | >=2G | k8s-master |
172.10.0.15 | worker | >=2c | >=2G | k8s-node-1 |
172.10.0.18 | worker | >=2c | >=2G | k8s-node-2 |
注:以下操作需要在每台主机上操作
1.修改主机名,在master节点执行
hostnamectl set-hostname k8s-master
剩下的工作节点,执行 hostnamectl set-hostname k8s-*即可
2.编辑 /etc/hosts 文件,添加域名解析
cat <<EOF >>/etc/hosts
172.17.0.12 k8s-master
172.10.0.15 k8s-node-1
172.10.0.18 k8s-node-2
EOF
注意:这里的IP(172.17.0.*)根据自个的真实内网ip而定
3.关闭防火墙,swap,和selinux。
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
4.配置内核参数,将桥接的IPv4流量传递到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.配置国内yum源(如果你的服务器是国外这步骤可以省略)
yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache
6.配置国内Kubernetes源(如果你的服务器是国外这步骤可以省略)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
7.配置docker源(如果你的服务器是国外这步骤可以省略)
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
二.安装
1.安装docker
yum install -y docker-ce
systemctl enable docker && systemctl start docker
验证docker是否安装成功
docker -version
2.安装kubeadm,kubelet,kubectl
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
- Kubelet负责与其他节点集群通信,并进行本节点Pod和容器生命周期的管理。
- Kubeadm是Kubernetes的自动化部署工具,降低了部署难度,提高效率。
- Kubectl是Kubernetes集群管理工具。
三.master节点部署
注:以下操作只需要在master节点上进行即可1.kubernetes集群初始化。
kubeadm init --kubernetes-version=1.18.0 \--apiserver-advertise-address=172.17.0.12 \--image-repository registry.aliyuncs.com/google_containers \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.244.0.0/16
命令解析:
- —pod-network-cidr: 定义pod网段为:10.244.0.0/16
- —apiserver-advertise-address:master主机内网IP地址
- —image-repository:指定阿里云镜像仓库地址。由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。(国外主机可以不用设定)
集群初始化会出现如下结果
右上图可以看到:
kubeadm join 172.17.0.12:6443 --token xj9dg2.3kwxfqwvnovx8l4o \
--discovery-token-ca-cert-hash sha256:8e66d889f00b8b24e72e45927f773cf90fc7a75c5608f15502d86a7940d0b629
2.配置kubectl工具
mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
3.部署Flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
四.工作node节点部署
注:在所有node节点执行上文master节点部署成功后生成的信息
kubeadm join 172.17.0.12:6443 --token xj9dg2.3kwxfqwvnovx8l4o \
--discovery-token-ca-cert-hash sha256:8e66d889f00b8b24e72e45927f773cf90fc7a75c5608f15502d86a7940d0b629
不出意外即可看到如下信息
五.集群验证
1.检查集群状态
kubectl get nodes
结果如下:
观察STATUS,如果为Ready时,则说明集群状态正常。
2.创建Pod验证
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
执行结果如下,则集群健康