k8s使用ingress总结

文章目录

安装准备

  • Centos7.7 vm 或者真实的物理机三台(master一台,node两台)
  • 硬件要求2GB ram,最低2CPU,最少32GB 硬盘
  • 节点之间最好网络互通,如果不考虑安全可以关闭firewalld
  • 可以访问到外部网络,因为需要网络资源,比如yum源和其他k8s需要的yaml文件

需要安装和配置

  • yum源配置
  • 防火墙selinux的关闭与配置
  • swap分区配置
  • 桥接ipv4流量交给iptables
  • 文件句柄数的限制
  • Docker的安装
  • Kubeadmin,flannel
  • 创建deployment,service,pod,ingress,ingress controller,kubernets-dashboard

具体安装步骤

  • VM 网络选择bridge模式 master:192.168.25.200 node:192.168.25.187/192.168.25.188

  • 防火墙

    1  $ systemctl stop firewalld
    2  $ systemctl disable firewalld
    
  • Selinux

    1  $ sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
    2  $ sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
    3  $ setenforce 0
    
  • 关闭swap

    1  swapoff -a 
    2  sed -i 's/.*swap.*/#&/' /etc/fstab
    
  • 网络转发

    1  cat > /etc/sysctl.d/k8s.conf << EOF
    2  net.bridge.bridge-nf-call-ip6tables = 1
    3  net.bridge.bridge-nf-call-iptables = 1
    4EOF
    
  • 文件句柄

    1  echo "* soft nofile 65536" >> /etc/security/limits.conf
    2  echo "* hard nofile 65536" >> /etc/security/limits.conf
    3  echo "* soft nproc 65536"  >> /etc/security/limits.conf
    4  echo "* hard nproc 65536"  >> /etc/security/limits.conf
    5  echo "* soft  memlock  unlimited"  >> /etc/security/limits.conf
    6  echo "* hard memlock  unlimited"  >> /etc/security/limits.conf
    
  • yum源

     1wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
     2
     3
     4cat > /etc/yum.repos.d/kubernetes.repo << EOF
     5      [kubernetes]
     6      name=Kubernetes
     7      baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
     8      enabled=1
     9      gpgcheck=1
    10      repo_gpgcheck=1
    11      gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    12      https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    13
    14  EOF
    15
    16   $ wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
    17  $ rpm --import yum-key.gpg
    18  $ wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    19  $ rpm --import rpm-package-key.gpg
    
  • 安装Docker kubectl kubeadm,kubelet

    1  $ yum -y install docker-ce-18.06.1.ce-3.el7
    2  $ systemctl enable docker && systemctl start docker
    3  $ yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 kubernetes-cni-0.6.0
    4  $ systemctl enable kubelet
    
  • 使用kubeadm来deploy Kubernets master

    1  $ kubeadm init \
    2  --apiserver-advertise-address=192.168.25.249 \
    3  --image-repository registry.aliyuncs.com/google_containers \
    4  --kubernetes-version v1.13.3 \
    5  --service-cidr=10.1.0.0/16 \
    6  --pod-network-cidr=10.244.0.0/16
    

    执行命令后生成的日志保存

    1kubeadm join 192.168.25.200:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
    
  • 配置kubectl

    1  mkdir -p $HOME/.kube
    2  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3  sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 安装flannel

    1  kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
    
  • Node节点加入

    z在node节点上执行上面保存的日志

    1  kubeadm join 192.168.25.200:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx
    
  • 安装kubernets-dashboard

     1  wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
     2
     3  kubectl apply -f kubernetes-dashboard.yaml
     4
     5  wget https://gist.githubusercontent.com/chukaofili/9e94d966e73566eba5abdca7ccb067e6/raw/0f17cd37d2932fb4c3a2e7f4434d08bc64432090/k8s-dashboard-admin-user.yaml
     6
     7 kubectl apply -f k8s-dashboard-admin-user.yaml
     8  key:
     9  kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
    10
    11  kubectl create clusterrolebinding test:anonymous --clusterrole=cluster-admin --user=system:anonymous
    
  • Docker 配置

    1/etc/docker/daemon.json
    2{
    3  "insecure-registries": [
    4      "0.0.0.0/0"
    5  ]
    

}

1 

给k8是生成访问docker的key kubectl -n default create secret docker-registry registry-key --docker-server=192.168.25.167:5000 --docker-username=xxx --docker-password=xx -- docker-email= @xx.com

1
2-  deploy and svc

-deploy-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name:  terminal-svc
  namespace: default
spec:
  type: NodePort
  selector:
    app:  terminal
  ports:
  - name: robo1
    port: 3012
    targetPort: 3012
    nodePort: 30012
  - name: robo2
    port: 9222
    targetPort: 9222
    nodePort: 30022
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name:  terminal-deploy
  namespace: default
  labels:
    app:  terminal
spec:
  replicas: 1
  selector:
    matchLabels:
      app:  terminal
  template:
    metadata:
      labels:
        app:  terminal
    spec:
      imagePullSecrets:
      - name: registry-key
      containers:
      - name:  terminal
        image: 192.168.25.25:5000/node-slim-web-app:latest //docker registry
        ports:
        - name: robo1
          containerPort: 3012
        - name: robo2
          containerPort: 9222
1
2- ingress
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
vi mandatory.yaml
kubectl apply -f mandatory.yaml
 kubectl label node --all kubernetes.io/os=linux

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: default
spec:
  rules:
    - host: xxxx.com
      http:
        paths:
          - path: /api/GetTerminalWS/a1           # urI路径为空,默认为/
            backend:
              serviceName: terminal-svc
              servicePort: 3012
1
2
3
4
5kubectl label node --all kubernetes.io/os=linux