k3d可以在docker中快速建立一个k3s集群,用于本地学习或开发k3s都非常方便,结合kubecm,我们就可以在开发环境和生产环境中快速切换。本文的前提是您已经安装好docker和k3d,并能正常的建立k3s集群。
1、通过以下命令建立一个名为k3s-dev的集群,并做端口映射。
k3d create -n k3s-dev -w 3 --publish 8081:80 --api-port 8443 -i rancher/k3s:v1.18.8-k3s1 -v /Users/kevinmeng/k3d/k3s-airgap-images-amd64-v1.18.8-k3s1/:/var/lib/rancher/k3s/agent/images/
注意这里我用的是本地镜像,如果不用本地镜像,没有梯子的话集群建立的时候有可能会一直出于CreateContainer状态。
2、建好集群后看看集群中的pod是否都能正常运行
kevinmeng@MacBook-Pro k8dash % kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7944c66d8d-gxnst 1/1 Running 0 52m
kube-system metrics-server-7566d596c8-k9x8l 1/1 Running 0 52m
kube-system local-path-provisioner-6d59f47c7-kkgbp 1/1 Running 0 52m
kube-system helm-install-traefik-l549b 0/1 Completed 0 52m
kube-system svclb-traefik-frm27 2/2 Running 0 40m
kube-system svclb-traefik-bwfnp 2/2 Running 0 40m
kube-system svclb-traefik-qbgxk 2/2 Running 0 40m
kube-system svclb-traefik-kwmvg 2/2 Running 0 40m
kube-system traefik-758cd5fc85-779vj 1/1 Running 0 40m
3、部署nginx
kubectl create deployment nginx --image=nginx
4、创建service
kubectl create service clusterip nginx --tcp=80:80
5、创建一个ingress.yaml文件,内容如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx
annotations:
ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
应用一下kubectl apply -f ingress.yaml
6、浏览器中输入http://localhost:8081即可访问nginx了。