手把手搭建Kubernetes集群

1.环境准备

由这三台物理机组成,一个master节点,两个node节点,如下所示。

节点主机IP(bond0.168)
k8s-node1(master)192.168.1.169
k8s-node2(slave)192.168.1.170
k8s-node3(slave)192.168.1.171

2.设置主机名

hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
hostnamectl set-hostname k8s-node3

3.主机名与ip映射

在master上添加主机名和ip对应关系:

vi /etc/hosts

添加如下

192.168.1.169  k8s-node1

192.168.1.170  k8s-node2

192.168.1.171  k8s-node3

4.禁用swap分区

为了保证 kubelet 正常工作,必须禁用swap分区。

# 临时
swapoff -a

# 永久
vi /etc/fstab
注释掉了/etc/fstab配置文件中的/swapfile none swap defaults 00

使用 free -m 命令查看是否禁用成功

5.禁用selinux

1.使用 vim /etc/sysconfig/selinux。

2.将SELINUX=enforcing改为SELINUX=disabled。

3.修改完成后,重启计算机 reboot 或 init 6。

6.禁用防火墙

systemctl stop firewalld
systemctl disable firewalld

7.允许iptables检查桥接流量

为了让节点上的 iptables 能够正确地查看桥接流量,确保在sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1

将桥接的IPv4流量传递到iptables的链(流量统计作用):

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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


可能遇到的问题:

遇见提示是只读的文件系统,运行命令:mount-o remount rw /

8.时间同步

所有节点同步时间是必须的,如果节点时间不同步,会造成Etcd存储Kubernetes信息的键-值数据库同步数据不正常,也会造成证书出现问题。

yum install ntpdate -yntpdate time.windows.com

9.安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum -y install docker-ce-18.06.1.ce-3.el7systemctl enable docker && systemctl start dockerdocker --version

给 docker设置阿里源

vi /etc/docker/daemon.json

添加下面内容:

{
	"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}

10.添加yum源

vi /etc/yum.repos.d/kubernetes.repo

添加下面内容:

[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

11.安装 kubeadm,kubelet 和 kubectl

yum install -y kubelet-1.18.1-0 kubeadm-1.18.1-0 kubectl-1.18.1-0systemctl enable kubelet

12.部署节点

1 部署Master节点

1.1 初始化kubeadm

在192.168.1.169

上执行下面的命令:

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

执行结果如下:

2 kubectl工具

接下来使用kubectl工具,分别执行以下命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 查看节点
kubectl get nodes

节点信息:

NAME STATUS ROLES AGE VERSION

k8s-node1 Ready master 3m52s v1.18.1

3 安装pod网络插件(CNI)

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

4添加k8s node节点

在执行kubeadm init后,会打印出添加节点的命令:

kubeadm join 192.168.1.169:6443 --token gr4xxxxxxxxxxrrvq --discovery-token-ca-cert-hash sha256:e9bcxef2ecxxxxxxxxxxxxxxx

若果没有记录下来可以使用以下命令查看:

kubeadm token create --print-join-command

如果出现如下问题,可以使用kubeadm reset命令重置:

[preflight] Running pre-flight checks [WARNING Hostname]: hostname “k8s-node1” could not be reached [WARNING Hostname]: hostname “k8s-node1”: lookup k8s-node1 on192.168.1.169:53: no such host

error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileAvailable–etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists [ERROR FileAvailable–etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists [preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...

5查看节点

kubectl get nodes

卸载K8s及组件

kubeadm reset

yum erase -y kubelet kubectl kubeadm kubernetes-cni
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值