jiqinga's Blog

使用kubeadm快速安装kubernetes集群

字数统计: 581阅读时长: 2 min
2020/06/18 Share

安装前设置

关闭防火墙

1
2
systemctl disabled firewalld
systemctl stop firewall

关闭SELinux

1
2
3
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
reboot

内核优化(防止kubeadm init报错)

1
2
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

禁用swap交换分区(可以不禁用,官方建议禁用)

1
swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab

安装Kubeadm、Kubelet、Kubectl

配置yum源

1
2
3
4
5
6
7
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repository
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

安装

安装最新版本去掉版本号即可

1
yum -y install kubelet-1.14.0 kubeadm-1.14.0 kubectl-1.14.0 --disableexcludes=kubernetes

kubectl补全

1
echo "source <(kubectl completion bash)" >> ~/.bashrc && source ~/.bashrc

设置kubelet忽略交换分区(已禁用swap可跳过此步)

1
sed -i '/KUBELET_EXTRA_ARGS=/ s/$/"--fail-swap-on=false"/' /etc/sysconfig/kubelet

设置服务开机自启

1
systemctl  enable kubelet && systemctl enable docker

生成默认初始化参数文件

1
2
3
4
5
6
7
8
9
10
kubeadm config print init-defaults > init.default.yaml
#根据需要进行修改
cat <<EOF > init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta1
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.14.0
networking:
podSubnet: "192.168.0.0/16"
EOF

下载Kubernetes镜像

1
kubeadm config images pull --config=init-config.yaml

运行kubeadm init安装master

1
kubeadm init --config=init-config.yaml --ignore-preflight-errors=swap | grep "kubeadm join" > node-join.txt

根据提示执行命令

1
2
3
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

移除master污点

master节点在默认情况下并不参与工作负载,如果希望master工作或安转单节点k8s集群,需要移除master污点,使其成为一个node工作节点.

1
kubectl taint nodes --all node-role.kubernetes.io/master-

安装weave网络插件

此次使用weave网络插件,详情可参考官方文档

1
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

node节点加入集群

node节点安装前设置

[^2]:参考上方master安装前设置

安装kubeadm,kubelet

1
yum -y install kubelet-1.14.0 kubeadm-1.14.0  --disableexcludes=kubernetes

获取token

默认master节点token一天后过期,或者忘记加入节点token,可以手动生成

1
kubeadm token create --print-join-command --ttl 0

加入节点

1
kubeadm join 182.10.1.161:6443 --token jcs77d.l64dq5la17l5hivr     --discovery-token-ca-cert-hash sha256:80b8d22d30b07526dd8dadc91414dfb1fd17467e7b8c4dc0199831f710c72294 --ignore-preflight-errors=swap

查看节点状态(master)

1
kubectl  get po --all-namespaces -w
CATALOG
  1. 1. 安装前设置
    1. 1.1. 关闭防火墙
    2. 1.2. 关闭SELinux
    3. 1.3. 内核优化(防止kubeadm init报错)
    4. 1.4. 禁用swap交换分区(可以不禁用,官方建议禁用)
  2. 2. 安装Kubeadm、Kubelet、Kubectl
    1. 2.1. 配置yum源
    2. 2.2. 安装
  3. 3. kubectl补全
    1. 3.1. 设置kubelet忽略交换分区(已禁用swap可跳过此步)
    2. 3.2. 设置服务开机自启
  4. 4. 生成默认初始化参数文件
  5. 5. 下载Kubernetes镜像
  6. 6. 运行kubeadm init安装master
    1. 6.1. 根据提示执行命令
  7. 7. 移除master污点
  8. 8. 安装weave网络插件
  9. 9. node节点加入集群
    1. 9.1. node节点安装前设置
    2. 9.2. 安装kubeadm,kubelet
    3. 9.3. 获取token
    4. 9.4. 加入节点
  10. 10. 查看节点状态(master)