五分钟带你玩转k8s全网最全搭建方式,楼主亲测

Posted 小黄鸡1992

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五分钟带你玩转k8s全网最全搭建方式,楼主亲测相关的知识,希望对你有一定的参考价值。

1.更改linux环境,关闭selinux等

swapoff -a  //关闭swap
setenforce 0 //临时关闭selinux

每台机器的以下内容不能相同

sudo cat /sys/class/dmi/id/product_uuid        //每台机器的uuid不能相同
ifconfig -a   //ip不能相同

端口不能占用

sudo netstat -ntlp |grep -E '6443|23[79,80]|1025[0,1,2]'

如果你执行上述命令时,提示 command not found,请执行 sudo yum install net-tools

2.下载安装

首页可以来到github上查询自己想要的版本 官网地址;https://github.com/kubernetes/kubernetes/releases

这里楼主选择

//选择一个文件夹下载包
wget -q https://dl.k8s.io/v1.21.0/kubernetes-server-linux-amd64.tar.gz
//解压上面下载gz包
tar -zxf kubernetes-server-linux-amd64.tar.gz 
ls kubernetes
ls kubernetes/server/bin/ | grep -E 'kubeadm|kubelet|kubectl'
//将kubeadm kubectl kubelet 移动至 /usr/bin
mv kubernetes/server/bin/kube{adm,ctl,let} /usr/bin/
//查看文件
ls /usr/bin/kube*
//查看是否安装成功
kubeadm version
kubectl version --client
kubelet --version

出现以下显示证明安装成功,且能看到安装版本

3.新增配置

//新增kubelet.service文件并写入以下配置 直接复制粘贴即可
cat <<'EOF' > /etc/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Agent
Documentation=http://kubernetes.io/docs/

[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
//新增文件夹并新增文件
mkdir -p /etc/systemd/system/kubelet.service.d
cat <<'EOF' > /etc/systemd/system/kubelet.service.d/kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
EOF
systemctl enable kubelet

4.安装插件

wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.21.0/crictl-v1.21.0-linux-amd64.tar.gz
tar zxvf crictl-v1.21.0-linux-amd64.tar.gz
mv crictl /usr/bin/
yum -y install socat conntrack-tools

5.启动

kubeadm config images pull  //获取k8s的需要的镜像

以下的镜像是启动k8s时需要的 ,但是根据楼主的测试,在官网上下根本不可能呢,所以需要使用镜像,如果使用v1.21.0版本,语句可以跟楼主相同,否则请根据以上命令需要的自行拉取

使用镜像拉取

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull coredns/coredns:1.8.0

但是k8s需要k8s.gcr.io前缀的镜像,这里更改一下名称

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0 k8s.gcr.io/kube-apiserver:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.21.0 k8s.gcr.io/kube-proxy:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.21.0 k8s.gcr.io/kube-controller-manager:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.21.0 k8s.gcr.io/kube-scheduler:v1.21.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.4.1 k8s.gcr.io/pause:3.4.1
docker tag coredns/coredns:1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0

开放端口号

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8443/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --reload

初始化服务

请安装docker 请安装docker 请安装docker 请安装docker 可以参考前文docekr安装

 kubeadm init --pod-network-cidr=10.244.0.0/16

kubeadm reset执行后可以重新初始化

设置docker模式

sysctl net.bridge.bridge-nf-call-iptables=1

设置环境变量

vi /etc/profile
//在最下面加上
export KUBECONFIG=/etc/kubernetes/admin.conf
//刷新环境
source /etc/profile

配置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes        

安装flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果出现Connecting to raw.githubusercontent.com refused,可以执行vi /etc/hosts 在后面添加199.232.96.133 raw.githubusercontent.com

验证节点是否成功

kubectl get nodes

如果出现ready则代表安装完成 master节点已经注册到了k8s 如果出现NotReady 可以执行以下语句判断服务器状态

kubectl get nodes -o yaml

以下绿色部分没有问题 红色部分异常message:docker: network plugin is not ready: cni config uninitialized'

如果出现以上问题 查看日志

journalctl -f -u kubelet.service

如果出现以下日志

"Error validating CNI config list" configList="{\\n  \\"name\\": \\"cbr0\\",\\n  \\"cniVersion\\": \\"0.3.1\\",\\n  \\"plugins\\": [\\n    {\\n      \\"type\\": \\"flannel\\",\\n      \\"delegate\\": {\\n        \\"hairpinMode\\": true,\\n        \\"isDefaultGateway\\": true\\n      }\\n    },\\n    {\\n      \\"type\\": \\"portmap\\",\\n      \\"capabilities\\": {\\n        \\"portMappings\\": true\\n      }\\n    }\\n  ]\\n}\\n" err="[failed to find plugin \\"flannel\\" in path [/opt/cni/bin] failed to find plugin \\"portmap\\" in path [/opt/cni/bin]]"

执行

cat <<EOF > /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
EOF

yum clean all
yum install kubernetes-cni -y

如果出现其他异常 请参考:https://blog.csdn.net/qq_34857250/article/details/82562514

6.卸载

kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd

 

以上是关于五分钟带你玩转k8s全网最全搭建方式,楼主亲测的主要内容,如果未能解决你的问题,请参考以下文章

五分钟带你玩转k8s全网最全最新安装nodes方式,楼主亲测好用

五分钟带你玩转k8s实战spring boot,应用环境发布java项目,楼主亲测

五分钟带你玩转k8s实战spring boot,应用环境发布java项目,楼主亲测

五分钟带你玩转SpringSecurity全网最全!带你掌握随机颜色与计算方式的验证码

五分钟带你玩转SpringSecurity全网最全!带你掌握随机颜色与计算方式的验证码

五分钟带你玩转apollodocker极简部署,楼主亲测