Minikube Ubuntu 22.04
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 启动 以下启动可能会卡在 - Booting up control plane ...
# 指定 v1.23.X 版本可正常通过
$ minikube start --image-mirror-country=cn \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version=v1.23.13
tester@server01:~$ minikube start --image-mirror-country=cn \
> --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
> --kubernetes-version=v1.23.13
* minikube v1.27.1 on Ubuntu 22.04
* Automatically selected the docker driver
* Using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Using Docker driver with root privileges
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Creating docker container (CPUs=2, Memory=2200MB) ...
* Preparing Kubernetes v1.23.13 on Docker 20.10.18 ...
- Generating certificates and keys ...
- Booting up control plane ...
- Configuring RBAC rules ...
* Verifying Kubernetes components...
- Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
* Enabled addons: default-storageclass
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
系统之前没有安装kubectl 所以提示使用增加 minikube
– ‘minikube kubectl – get pods -A’ 验证
tester@server01:~$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-65c54cc984-vgbwd 1/1 Running 0 21s
kube-system etcd-minikube 1/1 Running 0 35s
kube-system kube-apiserver-minikube 1/1 Running 0 33s
kube-system kube-controller-manager-minikube 1/1 Running 0 33s
kube-system kube-proxy-2jjcm 1/1 Running 0 22s
kube-system kube-scheduler-minikube 1/1 Running 0 33s
kube-system storage-provisioner 1/1 Running 0 32s
使用别名模拟使用kubectl
tester@server01:~$ alias kubectl="minikube kubectl --"
tester@server01:~$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-64897985d-hnlwh 1/1 Running 0 9m51s
kube-system etcd-minikube 1/1 Running 0 10m
kube-system kube-apiserver-minikube 1/1 Running 0 10m
kube-system kube-controller-manager-minikube 1/1 Running 0 10m
kube-system kube-proxy-69tsc 1/1 Running 0 9m51s
kube-system kube-scheduler-minikube 1/1 Running 0 10m
kube-system storage-provisioner 1/1 Running 1 (9m30s ago) 10m
建议以上alias kubectl="minikube kubectl --"
放入环境配置文件中永久生效
minikube 配置删除
$ minikube stop
$ minikube delete
本机IP
tester@server01:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:23:b0:24 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.79.200/24 brd 192.168.79.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe23:b024/64 scope link
valid_lft forever preferred_lft forever
tester@server01:~$ minikube dashboard
* Enabling dashboard ...
- Using image docker.io/kubernetesui/dashboard:v2.7.0
- Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:39857/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
http://127.0.0.1:39857/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
设置外部机器可以访问 dashboard
,设置宿主机IP代理
tester@server01:~$ kubectl proxy --port=37797 --address='192.168.79.200' --accept-hosts='^.*' &
宿主机访问 http://127.0.0.1:37797/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
外部访问 http://192.168.79.200:37797/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
设置Rabbit MQ
# 文件在文末
tester@server01:~/app/k8s-rabbitmq$ kubectl apply -f rabbitmq-pod.yaml
pod/rabbitmq-pod created
tester@server01:~/app/k8s-rabbitmq$ kubectl get pods
NAME READY STATUS RESTARTS AGE
rabbitmq-pod 1/1 Running 0 71s
# 文件在文末
tester@server01:~/app/k8s-rabbitmq$ kubectl apply -f rabbitmq-service.yaml
service/rabbitmq created
tester@server01:~/app/k8s-rabbitmq$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 179m
rabbitmq NodePort 10.110.224.108 <none> 5672:31123/TCP,15672:31567/TCP 20s
tester@server01:~/app/k8s-rabbitmq$ minikube service rabbitmq --url
http://192.168.49.2:31123
http://192.168.49.2:31567
宿主机桌面安装 `Ubuntu 22.04 桌面安装
通过宿主机网页访问 http://192.168.49.2:31567
录入 admin/admin
登入成功
Dashboard - Pods
Dashboard - Services
- Kubernetes Pod 是由一个或多个为了管理和联网而绑定在一起的容器构成的组
- 默认情况下,Pod 只能通过 Kubernetes 集群中的内部 IP 地址访问。 要使得 以上例子中
rabbitmq
容器可以从 Kubernetes 虚拟网络的外部访问,你必须将 Pod 暴露为 Kubernetes Service。
# rabbitmq-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: rabbitmq-pod
labels:
app: rabbitmq
spec:
containers:
- name: rabbitmq-pod
image: rabbitmq:3-management
ports:
- containerPort: 5672
name: amqp
- containerPort: 15672
name: http
env:
- name: RABBITMQ_DEFAULT_USER
value: admin
- name: RABBITMQ_DEFAULT_PASS
value: admin
# rabbitmq-service.yaml
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
spec:
type: NodePort
selector:
# 需与对应pod文件中 `metadata.name.labels.app` 一致
app: rabbitmq
ports:
- port: 5672
targetPort: 5672
name: amqp
- port: 15672
targetPort: 15672
# valid ports is 30000-32767
nodePort: 31567
name: http