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表示集群的服务正常,两个节点都在。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐