kubadm部署K8S
K8S的部署一级目录采用kubeadm方式部署环境准备这里博主采用一个master,一个node系统:centos7.x86_642G内存以上;2个cpu以上,硬盘20g以上【最低配置】集群中所有机器之间网络互通;可以访问外网,需要拉取镜像;做到以下五步:【这里做四步,最后一步,后面分享】1.在所有节点上安装docker和kubeadm2.部署kubernetes master3.部署容器网络插件
K8S的部署
采用kubeadm方式部署
环境准备
这里博主采用
一个master,两个node
系统:centos7.x86_64
2G内存以上;2个cpu以上,硬盘20g以上【最低配置】
集群中所有机器之间网络互通;
可以访问外网,需要拉取镜像;
做到以下五步:【这里做四步,最后一步,后面分享】
1.在所有节点上安装docker和kubeadm
2.部署kubernetes master
3.部署容器网络插件
4.部署kubernetes node,将节点加入集群
5.部署dashboard web 页面,可视化查看kubernetes资源
- 第一步:初始化
1、关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
2、 关闭selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
3、 关闭swap:
swapoff -a # 临时关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭
4、修改主机名
hostnamectl set-hostname master
5、 添加主机名与IP对应,相互解析
vim /etc/hosts
192.168.68.80 master
192.168.68.81 node1
6、将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
sysctl --system
安装docker/kubeadm/kubelet
1、安装docker源
yum install -y wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2、 安装docker
yum list docker-ce --showduplicates | sort -r 【列出存储库中docker的版本】
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker【开机自启】
docker --version 【查看版本号】
【docker镜像加速器器】
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://x09xh8i4.mirror.aliyuncs.com"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3、添加阿里云的yum软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
4、安装kubeadm,kubelet,kubelet
由于更新频繁,指定版本号部署:
yum install -y kubelet-1.17.2 kubeadm-1.17.2 kubectl-1.17.2
systemctl enable kubelet
5、 在master上执行【初始化】
kubeadm init \
--apiserver-advertise-address=192.168.116.129 \ 【apiserver的地址,一个master的话就是这个宿主机的ip地址】
--image-repository registry.aliyuncs.com/google_containers \ 【这个是拉镜像】
--kubernetes-version v1.17.2 \ 【这个是k8s版本】
--service-cidr=10.96.0.0/12 \ 【这个是service的ip】
--pod-network-cidr=10.244.0.0/16 【这个是pod的ip】
注意:ip地址要对应,出现以下情况则说明初始化成功
手动初始化–可看输出内容的:四步
kubeadm config print init-defaults > init.yaml【导出配置文件】
vim init.yaml【修改配置文件】改以下几个(ip,镜像下载地址,版本号,service的ip,pod的ip)
advertiseAddress: 192.168.68.80
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kubernetesVersion: v1.17.2
serviceSubnet: 10.96.0.0/12
podSubnet: 10.244.0.0/16
kubeadm config image pull --config init.yaml【拉镜像】
kubeadm init --config init.yaml【初始化这个文件】
若出现以下情况,则执行kubeadm reset【因为之前初始化过,所以一些文件已经存在】
[ERROR DirAvailable–var-lib-etcd]: /var/lib/etcd is not empty【】还是有这个报错,则rm -rf /var/lib/etcd
6、 使用kubectl 工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config【这个执行】
kubeadm join 192.168.68.81:6443 --token gh5hpt.5gwpnfvv1svma493 \
--discovery-token-ca-cert-hash sha256:77b99d771b19ead6d963d43f018bbcfb93c6d5c73d3619ed76a89db8820bac93
【这个初始化后需要复制下,后面加入node节点会用到】
7、 安装网络插件
kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如下载失败
网络插件的问题:
需要在访问控制中加入IP进行解析:
然后在wget直接把文件下载下来。【这个下载是最新版的】
此时发现还是失败:参考我的配置配置文件:https://blog.csdn.net/weixin_45574151/article/details/121585134
kubectl apply -f kube-flannel.yml 启动这个文件
出现以下情况,则说明启动成功
8、加入kubernetes node【在node节点上执行】
kubeadm join 192.168.68.81:6443 --token gh5hpt.5gwpnfvv1svma493 \
--discovery-token-ca-cert-hash sha256:77b99d771b19ead6d963d43f018bbcfb93c6d5c73d3619ed76a89db8820bac93 【初始化的时候显示】
如果忘记了token请重新执行以下命令:
【openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'】
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210112211202122.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU3NDE1MQ==,size_16,color_FFFFFF,t_70)
出现如图所示的问题:执行kubeadm reset【因为10250端口呗占用,之前有加入过】
9、查看集群的状态:
kubectl get node
kubectl get all -n kube-system
都是running表示集群的服务正常,两个节点都在。
更多推荐
所有评论(0)