前言
该文章是关于k8s环境的一个搭建过程,k8s的搭建有很多种方式,像单机搭建,虚拟机搭建等都可以,本次是基于腾讯轻量云服务器搭建的一个过程。
前期准备
- 至少两台服务器,官方上说最低配置是要求2C2G的,但是我准备的一台是1C2G,一台是4C4G的也没问题。
- 熟悉linux基本命令
host配置
4C4G机器设置为k8smaster节点,另外一台机器设置为k8snode节点
hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode
分别进入两台的/ect/hosts目录,设置r如下host
# 这里实际上配置的是公网ip,为了不泄露ip,所以写了两个假的IP
192.168.1.1 k8smaster
192.168.2.2 k8snode
由于k8s内部节点之间的通讯使用的是内网ip,我们需要把内网ip的重定向到公网ip上
iptables -t nat -A OUTPUT -d 10.0.1.1 -j DNAT --to-destination 192.168.1.1 (node节点执行,使得node在访问master的内网ip的时候,转发到公网ip)
iptables -t nat -A OUTPUT -d 10.0.2.2 -j DNAT --to-destination 192.168.2.2
(master节点执行,使得master在访问node内网ip的时候,都转发到公网ip)
端口开放
由于两台机器是处于公网环境,且k8s节点之间需要通讯,所以需要开放一些端口,端口配置可以直接进到腾讯云控制台进行配置
以下是官网要求的master节点的端口配置
可以进入腾讯云服务器的防火墙配置开放相应端口,端口可以限定来源,只允许node节点(192.168.2.2)访问
以下是官网要求的node节点的端口配置
同理,也设置node节点的端口
组件安装
master节点需要安装
- docker
- kubectl 集群命令行交互工具
- kubeadm 集群初始化工具
node节点需要安装
- docker
- kubelet 管理 Pod 和容器,确保他们健康稳定运行
- kube-proxy 网络代理,负责网络相关的工作
添加安装源(所有节点)
# 添加 k8s 安装源
cat <<EOF > 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
mv kubernetes.repo /etc/yum.repos.d/
# 添加 Docker 安装源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装命令
yum install -y kubelet kubeadm kubectl docker-ce
设置开机启动
systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker
修改docker配置(所有节点)
# kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了
cat <<EOF > daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/
# 重启生效
systemctl daemon-reload
systemctl restart docker
启动k8s
组件安装完成后就可以启动了,首先启动master节点,然后让node节点加入master几点即可。
在master节点使用kubeadm初始化集群
这里需要保存token,token是用于node节点加入maste节点的凭证
# 初始化集群控制台 Control plane
# 失败了可以用 kubeadm reset 重置
# 记得把 kubeadm join xxx 保存起来
# 忘记了重新获取:kubeadm token create --print-join-command
kubeadm init --image-repository=registry.aliyuncs.com/google_containers
node节点加入master节点
kubeadm join 192.168.1.1:6443 --token xxx --discovery-token-ca-cert-hash xxx
安装网络插件,否则node是NotReady状态(主节点跑)
# 很有可能国内网络访问不到这个资源,你可以网上找找国内的源安装 flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
master节点查看结果
kubectl get nodes
参考资料
https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/nd7yOvdY
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/