k8s集群搭建
Kubernetes官网
1.前置要求
- 3台Linux 搭建1个master节点和2个node节点
- 每台机器 2 GB 或更多的运行内存(少了可能起不来)
- 每台机器2CPU或以上
- 集群中的所有机器的网络彼此均能相互(能ping通)连接(公网和内网都可以)
- 节点之中不可以有重复的主机名、MAC 地址或 product_uuid
- 开启机器上的某些端口
- 禁用交换分区
2.设置linux环境
-
关闭防火墙(开发时 生产环境请自定义规则)
Terminal window systemctl stop firewalldsystemctl disable firewalld -
关闭selinux
Terminal window #全局禁用sed -i 's/enforcing/disabled/' /etc/selinux/config#禁用当前会话setenforce 0 -
关闭swap 内存交换
Terminal window #关闭当前swapoff -a#全局禁用vim /etc/fstab#将带有swap的注释掉 wq保存#/dev/mapper/centos-swap swap swap defaults 0 0#验证 swap必须全为0 -m:兆单位 -g:吉单位free -m -
设置主机名 不能是localhost
Terminal window #查看主机名hostname#设置主机名hostnamectl set-hostname 新主机名 -
添加主机名与IP的对应关系
Terminal window vim /etc/hostsTerminal window 172.16.10.67 k8s-node1172.16.10.68 k8s-node2172.16.10.69 k8s-node3
3.安装(所有节点)
-
卸载之前的docker
Terminal window sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine -
安装docker的前置依赖
Terminal window yum install -y yum-utils device-mapper-persistent-data lvm2 -
设置docker的yun源
Terminal window sudo yum-config-manager \--add-repo \http://download.docker.com/linux/centos/docker-ce.repo -
安装docker以及docker-ci
Terminal window sudo yum install -y docker-ce docker-ce-di containerd.io -
配置docker加速
Terminal window sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://akqgo94r.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker -
设置开机启动
Terminal window systemctl enable docker -
添加阿里yum源
Terminal window cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghtsts://mirrors.aliyun.com/kubemnetes/yum/doc/rpm-package-key.gpgEOF -
安装kubeadm、kubelet、kubectl
Terminal window #查看yum源 可以检测上一步配置的正确性yum list|grep kube#安装yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3#启动kubelet和设置开机启动systemctl enable kubeletsystemctl start kubelet -
设置kubeadm、kubelet、kubectl镜像
- 添加master_images.sh文件 赋予可执行权限
#!/bin/bashimages=(kube-apiserver:v1.17.3kube-proxy:v1.17.3kube-controller-manager:v1.17.3kube-scheduler:v1.17.3coredns:1.6.5etcd:3.4.3-0pause:3.1)for imageName in ${images[@]} ; dodocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageNamedone -
初始化master apiserver-advertise-address地址是你自己master的地址
Terminal window kubeadm init \--apiserver-advertise-address=172.16.10.67 \--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \--kubernetes-version v1.17.3 \--service-cidr=10.96.0.0/16 \--pod-network-cidr=10.244.0.0/16-
错误解决
[preflight] Running pre-flight checks [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/ error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1 [preflight] If you know what you are doing, you can make a check non-fatal with—ignore-preflight-errors=…To see the stack trace of this error execute with --v=5 or higherTerminal window echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

image-20200531160553780 -
-
开始使用之前先按照提示执行几个命令
Terminal window mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config -
安装网络插件(flannel)
-
获取kube-flannel.yml 文件
Terminal window https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml -
apply配置文件
Terminal window kubectl apply -f kube-flannel.yml -
查看pods 都要Running才行
Terminal window kubectl get pods --all-namespaces
image-20200531161740778
-
-
查看主节点状态
Terminal window kubectl get nodes
image-20200531163000466 -
master节点Ready了 让其它节点加入
Terminal window kubeadm join 172.16.10.67:6443 --token idjrsn.y0g0ji2sbde1ev3r \--discovery-token-ca-cert-hash sha256:4204390176617c66a8b40f665a63bfc520a0ae031181006fbfd8b2c182653f6b
image-20200531163330307 -
token过期解决 ttl 0为永不过期
Terminal window kubeadm token create --ttl 0 --print-join-command
-
-
监控pod进度
Terminal window watch kubectl get pod -n kube-system -o wide全部Ready就安装完成了
image-20200531164251378
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!


