五分钟带你玩转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全网最全!带你掌握随机颜色与计算方式的验证码