K8S集群部署

环境准备

3台虚拟机,1台master,2台node,系统使用Centos7

master:10.77.30.10

node01:10.77.30.11

node02:10.77.30.12

如有备注仅Master或Node节点执行,则按照备注操作,没有则全部都要执行

1、安装k8s集群前准备工作

分别修改主机名

Master:

systemctl set-hostname Master

Node01:

systemctl set-hostname Node01

Node02:

systemctl set-hostname Node02

关闭firewalld

systemctl stop firewalld
systemctl disable firewalld

关闭selinux

sed -i 's/^ *SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

升级内核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-lt -y

分别重启3个节点服务器

reboot

关闭seap

swapoff -a

添加host

vim /etc/hosts

10.77.30.10 master01
10.77.30.11 node01
10.77.30.12 node02

将桥接的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

2、安装k8s集群

2.1、安装containerd/kubelet/kubeadm/kubectl

export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.20.x/install_kubelet.sh | sh -s 1.20.1

2.2、初始化 master 节点

# 只在 master 节点执行
# 替换 x.x.x.x 为 master 节点实际 IP(请使用内网 IP)
# export 命令只在当前 shell 会话中有效,开启新的 shell 窗口后,如果要继续安装过程,请重新执行此处的 export 命令
export MASTER_IP=10.77.30.10
# 替换 apiserver.demo 为 您想要的 dnsName
export APISERVER_NAME=c.com
# Kubernetes 容器组所在的网段,该网段安装完成后,由 kubernetes 创建,事先并不存在于您的物理网络中
export POD_SUBNET=10.77.8.1/16
echo "${MASTER_IP} ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.20.x/init_master.sh | sh -s 1.20.1

2.3、初始化master节点

# 只在 master 节点执行
# 执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态
watch kubectl get pod -n kube-system -o wide
# 查看 master 节点初始化结果
kubectl get nodes -o wide

2.4、初始化woker节点

# 只在 master 节点执行,获取token
kubeadm token create --print-join-command

2.5、初始化worker节点

# worker节点下执行
# 替换 x.x.x.x 为 master 节点的内网 IP
export MASTER_IP=x.x.x.x
# 替换 apiserver.demo 为初始化 master 节点时所使用的 APISERVER_NAME
export APISERVER_NAME=apiserver.demo
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts

# 替换为 master 节点上 kubeadm token create 命令的输出
kubeadm join c.com:6443 --token kcgjhz.jxuh6u14qobli2fo     --discovery-token-ca-cert-hash sha256:4d71aa6f568b04e5b5a18f19ff08942001a66cc0b2ecce08497908f96052ac7b

2.6、检查初始化结果

# 只在 master 节点执行
kubectl get nodes -o wide

显示如下信息后就成功了

[root@master01 ~]# kubectl get node 
NAME       STATUS   ROLES                  AGE   VERSION
master01   Ready    control-plane,master   12m   v1.20.1
node01     Ready    <none>                 50s   v1.20.1
node02     Ready    <none>                 48s   v1.20.1

2.7、安装 Ingress Controller

# 只在 master 节点执行
kubectl apply -f https://kuboard.cn/install-script/v1.20.x/nginx-ingress.yaml

–文章转自kuboard


一个菜鸡