k8s kubeadm部署实践
作者:zhsh123321
文章总结了部署Kubernetes集群的准备工作及关键步骤:关闭防火墙、禁用SELinux/swap、配置免密登陆、开启iptables转发,部署Docker和K8s,解决cgroup驱动问题,安装Calico网络插件,最终使集群节点状态变为Ready
节点机器准备工作
关闭防火墙
systemctl stop firewalld systemctl disable firewalld
配置免密登陆
ssh-keygen -t rsa ssh-copy-id node01
禁用SELinux
setenforce 0 /etc/sysconfig/selinux 中改SELINUX=disabled
禁用Swap
swapoff -a /etc/fstab 中注释swap行
打开iptables桥接功能及路由转发
sysctl -a |grep bridge 过滤bridge不存在就用下面命令加载 br_netfilter modprobe br_netfilter /etc/sysctl.d/k8s.conf 中添加两行 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1

各节点开启转发
在 /etc/sysctl.conf 中添加 net.ipv4.ip_forward = 1 执行 sysctl -p

部署k8s集群
部署docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker systemctl start docker docker --version
部署kubernetes
/etc/yum.repos.d/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
安装、开机自启kubelet
yum -y install kubelet kubectl kubeadm systemctl enable kubelet
配置Master节点初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers #--pod-network-cidr 是之后网络分配给pod的地址段,需要提前规划,避免网段冲突。10.244.0.0/16为flannel默认网段
报错
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
则修改daemon.json,新增‘“exec-opts”: [“native.cgroupdriver=systemd”’]
[root@master ~]# more /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
记录初始化中信息,方便节点加入

注意:
tocken 有效期24h,过期后加节点需要生成新token
kubeadm token create kubeadm token list
kubectl查看节点状态

此时因为没有装网络插件,所以是not ready
安装kubectl命令补全
yum -y install bash-completion source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> ~/.bashrc
安装kubens工具用于namespace切换
插件地址:https://github.com/ahmetb/kubectx#manual-installation-macos-and-linux
tar -xf kubens_v0.9.4_linux_x86_64.tar.gz ln -s /opt/kubens/kubens /usr/local/bin/kubens
安装网络插件Calico
获取calico.yaml
curl https://docs.projectcalico.org/manifests/calico.yaml -O
修改cidr,默认为注释

修改完安装
kubectl apply -f calico.yaml
calico安装完成后,集群转为ready状态

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
