转发来着 https://blog.csdn.net/qq_29113041/article/details/110085072
https://www.jianshu.com/p/f2d4dd4d1fb1
https://blog.xujiuming.com/ming/47ddc293.html

部署前置操作

安装k8s相关组件

具体需要安装kubelet kubeadm kubectl。由于从国外下载需要翻墙,所以添加阿里的仓库,从阿里仓库下载

apt-get update && apt-get install -y apt-transport-https
 
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  
 
apt-get update
apt-get install -y kubelet kubeadm kubectl

统一docker和k8s的cgroup机制

两种cgroup机制:cgroupfs和systemd
使用docker info命令查看docker使用的cgroup机制:
Cgroup Driver: cgroupfs

修改docker的cgroup机制为systemd,保持docker和k8s的cgroup机制一致。vim /etc/docker/daemon.json,写入以下内容:

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker:

systemctl restart docker
systemctl enable docker

k8s要求关闭swap

# 临时
swapoff  -a
 
# 永久
swapoff -a && sysctl -w vm.swappiness=0  # 关闭swap
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab  # 取消开机挂载swap

注意:swapoff -a 命令只会临时关闭swap,如果采取该方式关闭swap,在重启系统后swap又会开启,将导致k8s启动失败。如果k8s启动失败,可以关闭swap后运行以下命令(该命令与部署无关,仅作提醒)

systemctl daemon-reload
systemctl restart kubelet

设置系统参数允许路由转发,不对网桥的数据进行处理

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

关闭防火墙

systemctl stop ufw
systemctl disable ufw

初始化

使用kubeadm的init命令就可以轻松的完成初始化,不过需要携带几个参数,如下。先不要直接复制执行,将赋值给--apiserver-advertise-address参数的 ip 地址修改为自己的master主机地址,然后再执行。

kubeadm init \
--apiserver-advertise-address=192.168.56.11 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16

这里介绍一下一些常用参数的含义:

--apiserver-advertise-address: k8s 中的主要服务apiserver的部署地址,填自己的管理节点 ip
--image-repository: 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像。
--pod-network-cidr: 这个是 k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填10.244.0.0/16就好
--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定。
--ignore-preflight-errors: 忽略初始化时遇到的错误,比如说我想忽略 cpu 数量不够 2 核引起的错误,就可以用--ignore-preflight-errors=CpuNum。错误名称在初始化错误时会给出来。

当你看到如下字样是,就说明初始化成功了,请把最后那行以kubeadm join开头的命令复制下来,之后安装工作节点时要用到的,如果你不慎遗失了该命令,可以在master节点上使用kubeadm token create --print-join-command命令来重新生成一条。

如果在初始化过程中出现了任何Error导致初始化终止了,使用kubeadm reset重置之后再重新进行初始化。

配置 kubectl 工具

这一步就比较简单了,直接执行如下命令即可:

mkdir -p /root/.kube && \
cp /etc/kubernetes/admin.conf /root/.kube/config

注意若在非root用户下需要配置admin.conf, 拷贝master节点的/etc/kubernetes/admin.conf文件到k8s用户的home目录里。例如/home/k8s/.k8s目录。添加环境变量 ·export KUBECONFIG=/home/k8s/.k8s/admin.conf

执行完成后并不会刷新出什么信息,可以通过下面两条命令测试 kubectl是否可用:

# 查看已加入的节点
kubectl get nodes
# 查看集群状态
kubectl get cs

集群配置请参考

https://blog.csdn.net/qq_29113041/article/details/110085072
https://www.jianshu.com/p/f2d4dd4d1fb1

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐