zoukankan      html  css  js  c++  java
  • 基于kubeadm部署k8s1.80.0

    k8s搭建

    硬件要求

    测试环境

    # master
    2核   4G   20G
    # node
    4核   8G   40G
    

    生产环境

    # master
    8核   16G   100G
    # node
    16核  64G   500G
    

    方式一:基于kubeadm方式搭建

    具体指令部署

    1.创建一个Master节点kubeadm init
    2.将Node节点加入到当前集群中$kebeadm join <Master 节点的IP和端口>
    

    安装要求

    # 节点         主机ip                操作系统       内存硬盘
    master	      192.168.250.136       centos7       2核/4G/20G
    node1         192.168.250.137	    centos7	  2核/4G/40G
    node2	      192.168.250.138	    centos7	  2核/4G/40G
    

    修改master和node服务器相关配置信息

    # master和node节点
    # 1.关闭防火墙
    >>> systemctl stop firewalld.service
    >>> systemctl disable firewalld.service
    # 2.关闭selinux防火墙
    >>> setenforce 0
    >>> sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    >>> setenforce 0
    >>> getenforce 
    # 3.关闭swap分区
    swapoff -a  # 临时
    sed -ri 's/.*swap.*/#&/' /etc/fstab  # 永久
    # 4.master和node节点之间设置无密访问
    >>> cat >> /etc/hosts << EOF
    192.168.250.136 master
    192.168.250.137 node1
    192.168.250.138 node2
    EOF
    >>> scp -rp /etc/hosts root@192.168.250.137:/etc/hosts
    >>> scp -rp /etc/hosts root@192.168.250.138:/etc/hosts
    >>> ssh-keygen -t rsa
    >>> ssh-copy-id -i root@192.168.1.137
    >>> ssh-copy-id -i root@192.168.1.138
    # 5.将桥接的IPV4流量传递到iptables的链
    >>> cat >/etc/sysctl.d/k8s.conf << EOF
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    >>> sysctl --system # 生效
    

    所有节点安装Docker/kubeadm/kubelet

    # 1.安装docker
    >>> wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    >>> yum install -y docker-ce-18.06.1.ce
    >>> systemctl enable docker && systemctl start docker
    # 2.修改一下docker仓库源
    >>> cat > /etc/docker/daemon.json << EOF
    {
    	"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
    }
    EOF
    # 3.重启docker
    >>> systemctl restart docker
    

    添加阿里云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=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
    

    安装kubeadm,kubelet和kubectl

    >>> yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
    >>> systemctl enable kubelet
    

    部署Kubernetes Master

    # 在192.168.250.136(Master)执行`
    # apiserver-advertise-address修改为自己的master节点ip
    >>> kubeadm init 
        --apiserver-advertise-address=192.168.250.136 
        --image-repository registry.aliyuncs.com/google_containers 
        --kubernetes-version v1.18.0 
        --service-cidr=10.96.0.0/12 
        --pod-network-cidr=10.244.0.0/16
    
    # --apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。
    
    # --pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个 CIDR。
    
    # --image-repository Kubenetes默认Registries地址是 k8s.gcr.io,在国内并不能访问 gcr.io,在1.13版本中我们可以增加–image-repository参数,默认值是 k8s.gcr.io,将其指定为阿里云镜像地址:registry.aliyuncs.com/google_containers。
    
    >>> docker images  # 查看拉取的镜像
    
    # 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
    # 使用kebectl工具:下面的代码在kubeadm init安装结束的最后面可以找到,执行一下就行
    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   # 在node加入节点后,可以查看节点的状态
    NAME     STATUS     ROLES    AGE   VERSION
    master   NotReady   master   10m   v1.18.0
    node1    NotReady   <none>   18s   v1.18.0
    node2    NotReady   <none>   9s    v1.18.0
    

    加入kubernetes Node节点执行

    # 在node1和node2节点上执行# 向集群添加新节点,执行kubeadm init输出的kubeadm join命令:下面的代码在kubeadm init执行结束的时候可以找到
    >>> kubeadm join 192.168.250.136:6443 --token ygoeiv.nk8iy57zwvyycj30     
    --discovery-token-ca-cert-hash sha256:4f861bf078d636a3177a0e7b2697ed996b1ed72dd5688ed4d3a91cff8aa57704    
    # token有效期24小时,过期后,重新创建>>> kubeadm token create --print-join-command
    

    部署CNI网络插件

    # 修改hosts进行映射关系访问https://www.ipaddress.com/,搜索raw.githubusercontent.com,找出对应的ip
    >>> vi /etc/hosts
    185.199.108.133 raw.githubusercontent.com# 获取,多执行几次,网络不好的话
    # 方式一 推荐方式一
    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml
    >>> sed -i 's/quay.io/quay-mirror.qiniu.com/g' kube-flannel.yml  # 修改源
    # 方式二
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 查看集群组件是否搭建成功
    >>> kubectl get pods -n kube-systemkube-flannel-ds-p4df7            
    0/1     Init:ImagePullBackOff   0          122mkube-flannel-ds-plpkn            1/1     Running                 3          122mkube-flannel-ds-sz8b9            1/1     Running                 0          82m
    # 方式二出现的问题上面的flannel一直处于Init:ImagePullBackOff,这是由于拉取镜像网络的原因解决办法:去https://github.com/flannel-io/flannel/releases/tag/v0.14.0上下载flanneld-v0.14.0-amd64.docker然后上传到master服务器上
    >>> docker load -i flanneld-v0.14.0-amd64.docker
    >>> docker rmi quay.io/coreos/flannel:v0.14.0  # 删除之前的镜像
    >>> docker tag 8522d622299c quay.io/coreos/flannel:v0.14.0  # 将我们上传的镜像重新打标签
    >>> docker rmi quay.io/coreos/flannel:v0.14.0-amd64.docker # 删除上传的镜像
    >>> kubectl get pods -n kube-system  # 重新查看
    

    测试集群

    # master节点下载nginx
    >>> kubectl create deployment nginx --image=nginx
    >>> kubectl get pod  # 查看pod
    >>> kubectl expose deployment nginx --port=80 --type=NodePort   # 对外暴露一个端口用来访问nginx
    >>> kubectl get pod,svc  # 查看对外暴露的端口NAME                        
    READY   STATUS    RESTARTS   AGEpod/nginx-f89759699-kpq4r   
    1/1     Running   0          3m24sNAME                 
    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        
    AGEservice/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        156mservice/nginx        
    NodePort    10.110.78.94   <none>        80:30015/TCP   108s
    # 页面访问192.168.250.136:30015
    

    -------------------------------------------

    个性签名:代码过万,键盘敲烂!!!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    .NET数据库编程求索之路6.使用ADO.NET实现(三层架构篇使用List传递数据基于存储过程)(1)
    【转】模板化的单例模式
    .NET数据库编程求索之路7.使用ADO.NET实现(工厂模式实现多数据库切换)(1)
    【转】VC++项目中stdafx.h的作用
    【转】用oledb读取dbf文件报错--“外部表不是预期的格式” [
    【转】ADO.Net连接DBF文件
    【转】可能继承的C++ Singleton基类
    .NET数据库编程求索之路6.使用ADO.NET实现(三层架构篇使用List传递数据基于存储过程)(2)
    .NET数据库编程求索之路4.使用ADO.NET实现(三层架构篇使用Table传递数据)(3)
    RMAN>干掉热备份#OCP试验1#
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/14995481.html
Copyright © 2011-2022 走看看