minikube 测试kubernetes ingress

张杰

使用minikube 搭建本地kubernetes环境

https://github.com/kubernetes/minikube


# 安装docker 
# 启动
minikube start --extra-config=kubelet.RuntimeCgroups=/systemd/system.slice --extra-config=kubelet.KubeletCgroups=/systemd/system.slice  --extra-config=kubelet.CgroupDriver=systemd --vm-driver=none

开启ingress权限

minikube addons enable ingress

创建pod 文件

cat >pod.xml << EOF

apiVersion: v1
kind: Pod
metadata:
  name: test
  namespace: default
  labels:
    run: test
spec:
  containers:
    - name: test
      image: jiulongzaitian/test:1
      imagePullPolicy: Always
      command:
        - sh
        - -c
        - /tmp/test

EOF

注意: jiulongzaitian/test:1 镜像需要docker login,具体 kubernetes 使用pullimageSecrets 拉取镜像,请参照: 正确使用pullimageSecret

创建test svc 文件

cat > svc.yaml << EOF

apiVersion: v1
kind: Service
metadata:
  labels:
    run: test
  name: test
  namespace: default
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    run: test
  type: NodePort

EOF

创建ing 文件

cat > ing.yaml << EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: test
              servicePort: 80
            path: /
EOF

注意: annotations 里如果没有 ingress.kubernetes.io/ssl-redirect: "false" annotations, 则会报错:

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.11.12</center>
</body>
</html>

部署ingress Nginx controller

参照:https://github.com/kubernetes/ingress-nginx/blob/master/deploy/README.md

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/namespace.yaml \
    | kubectl apply -f -

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/default-backend.yaml \
    | kubectl apply -f -

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/configmap.yaml \
    | kubectl apply -f -

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/tcp-services-configmap.yaml \
    | kubectl apply -f -

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/udp-services-configmap.yaml \
    | kubectl apply -f -

# use RBAC

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/rbac.yaml \
    | kubectl apply -f -

curl https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/with-rbac.yaml \
    | kubectl apply -f -

创建资源

kubectl create - f .

查看资源

kubectl get pod test
#NAME      READY     STATUS    RESTARTS   AGE
#test      1/1       Running   1          2h


kubectl get svc test
#NAME      TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
#test      NodePort   10.101.124.30   <none>        80:30506/TCP   2h


kubectl get ing test
#NAME      HOSTS     ADDRESS      PORTS     AGE
#test      *         10.146.0.7   80        22m

# 这时候 执行 
curl 10.146.0.7:80

#则会出现 hello world 字段,这是pod 里的服务产生的

results matching ""

    No results matching ""