1、环境准备:

*部署kubernetes对硬件要求2GB内存以上,并且需要2核心以上的CPU

#准备3台虚拟机
master: 192.168.0.105
node2:  192.168.0.104
node3:  192.168.0.103

*在各节点上修改hosts

cat >> /etc/hosts << EOF 
192.168.0.105 master
192.168.0.104 node1
192.168.0.103 node2
EOF

*部署kubernetes需要关闭防火墙,禁用selinux,禁用swap

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

*一些 RHEL/CentOS 7 的用户曾经遇到过问题:由于 iptables 被绕过而导致流量无法正确路由的问题。您应该确保 在 sysctl 配置中的 net.bridge.bridge-nf-call-iptables 被设置为 1。

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

 

2、配置国内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

 

3、安装docker-ce

 *进行docker的安装

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce-19.03.9-3.el7
# Step 4: 开启Docker服务
sudo service docker start
# Step 5: 开机自动启动docker
sudo systemctl enable docker
#安装docker完成

 

*我们安装的docker使用的文件驱动是systemd,需要文件驱动由默认systemd改成cgroupfs,否则造成驱动不一致, 导致镜像无法启动

#设置镜像加速 -- registry-mirrors
#文件驱动改成cgroupfs -- exec-opts
#私有仓库没有配置https证书,需要配置insecure-registries选项
cat > /etc/docker/daemon.json << EOF 
{
  "registry-mirrors": [
    "https://xxx.com"
  ],
  "insecure-registries": ["192.168.1.99:8085"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

EOF

#重启docker
systemctl daemon-reload
systemctl restart docker

 

 

4、安装 kubelet、kubeadm、kubectl

  1. kubelet负责与其他节点集群通信,并进行本节点pod和容器生命周期的管理。
  2. kubeadm是kubernetes的自动化部署工具,降低了部署难度,提高效率。
  3. kubectl是kubernetes集群管理工具。
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0 --disableexcludes=kubernetes
systemctl enable --now kubelet

*在master进行kubernetes集群初始化

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

 

*配置kubectl工具

mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
kubectl get nodes
kubectl get cs

*配置flannel网络

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果无法访问,则可手动下载 https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml 文件到当前目录,再执行 kubectl apply -f kube-flannel.yml 命令。

 

 

5、加入集群

*master初始化完成后,会输出以下的命令,可用于其他节点加入到当前集群

kubeadm join 192.168.0.105:6443 \
--token t6fvgi.sxwewz8gbcfwmfxx \
--discovery-token-ca-cert-hash \
sha256:f8307d231f69536e8e34dba53f4277a25bc759f10c1ed9802dd0dbfa98cb6f5f

*在node节点安装kubeadm

yum install -y kubeadm

*在node节点输入加入集群命令

kubeadm join 192.168.0.105:6443 \
--token t6fvgi.sxwewz8gbcfwmfxx \
--discovery-token-ca-cert-hash \
sha256:f8307d231f69536e8e34dba53f4277a25bc759f10c1ed9802dd0dbfa98cb6f5f

*在master查看集群信息

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   1h   v1.19.4
node1    Ready    <none>   1h   v1.19.4
node2    Ready    <none>   1h   v1.19.4

*重新生成加入集群的token,可以在master节点运行

kubeadm token create --print-join-command

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐