zoukankan      html  css  js  c++  java
  • K8S(一)——在虚拟机中搭建K8S

    1.在虚拟机中安装3台centos(版本为1708)

     

       ①下载镜像可找国内镜像地址镜像下载

              https://www.cnblogs.com/LiLiliang/p/12090115.html

    2.检查网络是否通畅,ping以下百度的IP地址(可在主机命令符中ping baidu.com得到解析后的IP)

     

     

    ***  报错 network is unreachable可修改ifcfg-ens3配置进行解决

     

    cd /etc/sysconfig/network-scripts/  
    vi ifcfg-ens33

    修改ONBOOT=yes

     

      重启network 

      

    service network restart

    检查网络可用 

     

    3.修改源镜像地址

      ①安装wget命令

    yum -y install wget

      ②备份系统自带的源镜像地址

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

      ③下载阿里云的源镜像地址

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

      ④生成缓冲

    yum makecache

    4.安装VMware Tools

     *** 如果觉得安装VMware-TOOLS过于麻烦,可使用Linux远程工具(CRT或者SSH),在宿主机器上进行连接使用。实测好用很多(* ̄︶ ̄)

      ①点击菜单栏–>虚拟机–>安装VMware Tools

     

        ②在虚拟机中,以 root 身份登录客户机操作系统,打开终端窗口并运行ls /dev命令查看是否含有cdrom目录

      

      ③将CD-ROM挂载到其他目录下,一般是将/dev/cdrom 挂载到/mnt/cdrom目录

      使用ls /mnt查看是否已经含有/cdrom目录 如果没有则创建cdrom 

      

    mkdir cdrom

      ④使用命令mount -t iso9660 /dev/cdrom /mnt/cdrom将光盘挂载在/mnt/cdrom目录,并使用命令ls /mnt/cdrom查看是否挂载成功

       

     mount -t iso9660 /dev/cdrom /mnt/cdrom ls /mnt/cdrom

      ⑤将后缀名为tar.gz的文件拷贝到家目录下,使用命令cp /mnt/cdrom/ VMwareTools-9.9.3-2759765.tar.gz ~,并用命令ls ~查看是否复制成功

       

     cp /mnt/cdrom/ VMwareTools-9.9.3-2759765.tar.gz ~ ls ~

      ⑥使用命令umount /dev/cdrom解除挂载

       

     umount /dev/cdrom

      ⑦进去root跟目录下,使用命令tar -zxvf VMwareTools-9.9.3-2759765.tar.gz解压包

       

     tar -zxvf VMwareTools-9.9.3-2759765.tar.gz

      ⑧使用命令cd vmware-tools-distrib进入到解压后的源码文件目录,运行vmware-install.pl文件

      

    cd vmware-tools-distrib ./vmware-install.pl

    ***  如果出现以下错误(“-bash: ./vmware-install.pl: /usr/bin/per: bad interpreter: No such file or directory”),表明未安装编译环境

      

     安装编译环境

       

     yum -y install perl gcc gcc-c++ make cmake kernel kernel-headers kernel-devel net-tools

     

    5.关闭、禁用防火墙: 

      

    systemctl stop firewalld systemctl disable firewalld

    6.禁用SELINUX(setenforce是Linux的selinux防火墙配置命令, 执行setenforce 0 表示关闭selinux防火墙):

      

    setenforce 0

    7.创建 /etc/sysctl.d/k8s.conf 文件,添加如下内容: 

      

      

    net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1

    使得配置文件生效 

      

    modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf

    ** 界面繁琐时可reset命令进行清空界面

    8.安装docker

      # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 

       # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

      # Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce 

       # Step 4: 开启Docker服务 sudo service docker start  # Step 5: 设置开机启动 sudo systemctl enable docker 

      

      

      

      

      

      

    查看docker是否安装成功

    docker -v

     

    9.配置阿里云镜像加速器:

    mkdir -p /etc/docker  tee /etc/docker/daemon.json <<-'EOF' {   "registry-mirrors": ["https://obww7jh1.mirror.aliyuncs.com"] } EOF
     systemctl daemon-reload 
     systemctl restart docker

      

    10.安装 kubelet kubeadm kubectl

    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 install -y kubelet kubeadm kubectl  
    systemctl enable --now kubelet

      

       

     

    11.初始化 Master 节点 master

    kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers

     

     l  --pod-network-cidr :后续安装 flannel 的前提条件,且值为 10.244.0.0/16, 参考资料

    l  --image-repository :指定镜像仓库

    **报错the number of available CPUs 1 is  less than the required 2

    解决:需要机器至少需要两核,修改虚拟机设置即可

      

     报错running with swap on is not supported. Please disable swap

    解决:需要关闭swap

    swapoff -a

    修改 vi /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用free -m确认swap已经关闭。 swappiness参数调整,修改vi /etc/sysctl.d/k8s.conf添加下面一行:

    vm.swappiness=0

    执行sysctl -p /etc/sysctl.d/k8s.conf使修改生效。

      

      

       

    从日志中,可以看出,要使用集群,需要执行如下命令: 

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

      

    还需要部署一个 Pod Network 到集群中,此处选择 flannel :

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

      

    ** 如果此处报错连接不上raw.githubusercontent.com,可自行在下载kube-flannel.yml,放到虚拟机系统中

    参考链接:https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml

      

    至此,Master 节点初始化完毕,查看集群相关信息:

    # 查看集群信息 $ kubectl cluster-info

      

    # 查看节点信息$ kubectl get nodes

     

    # 查看 Pods 信息$ kubectl get pods --all-namespaces

      

    如果初始化过程出现问题,使用如下命令重置:

    kubeadm reset rm -rf /var/lib/cni/ rm -f $HOME/.kube/config

    12.将node1和node2加到master中

    在master中生成token和sh256

    kubeadm token createopenssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

      

     在node1和node2中join

     kubeadm join 192.168.19.133:6443 --token kgm5g2.i9h9zupp09ai0ema--discovery-token-ca-cert-hash sha256:821850c1ff323bc8555006f9c6eb9d0f135d91898aa11c8821678144e715210a

    注意:实际命令中的ip、token和sha256应以自己机器实际的为准

    在master中查看

     kubectl get nodes

      

    ***如果这里是notready,如果pod状态为Pending、ContainerCreating、ImagePullBackOff 都表明 Pod 没有就绪,Running 才是就绪状态。

    如果有pod提示Init:ImagePullBackOff,说明这个pod的镜像在对应节点上拉取失败,我们可以通过 kubectl describe pod 查看 Pod 具体情况,以确认拉取失败的镜像:

       

    可以用国内镜像源,注意命令中的版本号应和自己的实际版本号一致,可用 kubectl describe pod kube-flannel-ds-amd64-d2r8p --namespace=kube-system查看(kube-flannel-ds-amd64-d2r8p为pod名称)

    docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 
    docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

    13.测试集群各个组件

      首先验证kube-apiserver, kube-controller-manager, kube-scheduler, pod network 是否正常:部署一个 Nginx Deployment,包含2个Pod

     kubectl create deployment nginx --image=nginx:alpine
    kubectl scale deployment nginx --replicas=2

    验证Nginx Pod是否正确运行,并且会分配10.244.开头的集群IP

    kubectl get pods -l app=nginx -o wide

    验证一下kube-proxy是否正常

    kubectl expose deployment nginx --port=80 --type=NodePort

    可以通过任意 NodeIP:Port 在集群外部访问这个服务:

    curl 192.168.150.128:30670

     

    参考地址:https://www.cnblogs.com/tylerzhou/p/10971336.html

    **如果机器断电关机后,无法启动,报The connection to the server localhost:8080 was refused 错误

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile source ~/.bash_profile

    执行这两天命令可解决

      

  • 相关阅读:
    Docker从12升级到17ce
    镜像清理和删除
    flask-session 在redis中存储session
    linux后台运行python程序 nohup
    flask 自动切换环境
    Linux SSH登录很慢的解决方法
    docker-compose docker启动工具,容器互联
    为什么企业需要IT资产管理
    sql 中取整,四舍五入取整,向下取整,向上取整。
    sqlalchemy 获取表结构。
  • 原文地址:https://www.cnblogs.com/LiLiliang/p/12120798.html
Copyright © 2011-2022 走看看