VMware Workstation中开启虚拟化
安装之前需要在bios中开启虚拟化功能。这里是在vmvare虚拟机中安装。开启步骤如下:
1.1 下载virtualbox
官网地址:https://www.virtualbox.org/
1. 首先下载oracle_vbox.asc文件到本地:
wget -q https://www.virtualbox.org/download/oracle_vbox.asc
再执行import:
sudo rpm --import oracle_vbox.asc
2. cd 进入目录:/etc/yum.repos.d
新建一个文件virtualbox.repo, 输入如下内容:
01 02 03 04 05 06 07 |
|
然后执行命令行:
yum clean all
yum makecache
yum install VirtualBox-5.2
1.2 下载minikube
01 | curl -Lo minikube http://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64&& chmod +x minikube&&mv minikube /usr/local/bin/ |
1.3 下载kubectl
01 | curl -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl&& chmod +x kubectl&& mv kubectl /usr/local/bin/&&ln -sf /usr/local/bin/kubectl /usr/bin/kubectl |
1.4 下载kubeadm
01 | curl -Lo kubeadm http://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubeadm |
1.5 下载kubelet
01 | curl -Lo kubelet http://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubelet |
1.6 初始化环境变量:
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
mkdir -p $HOME/.kube
touch $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
1.7 启动minikube
01 02 |
或者 minikube start --vm-driver=none --image-mirror-country='cn' --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers |
--vm-driver=none (本身就是虚拟机,所以不需要将minikube再次安装到虚机里面,虚机中再安装虚机我的机器扛不住)
01 02 |
|
正常返回如下
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
例子:echoserver
echoserver 镜像是一个简单的 HTTP 服务器,将请求的 body 携待的参数返回
这里没有定义 manifest 文件,而是直接指定 image 做 deploy,这一步会启动一个 deployment 和对应的 pod
sudo kubectl create deployment hello-minikube \
--image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
暴露端口,这一步会启动一个 service
sudo kubectl expose deployment hello-minikube --type=NodePort --port=8080
查看 pod 的状态
sudo kubectl get pod
sudo kubectl get pods
sudo kubectl get pods -o wide
get pod 的返回
NAME READY STATUS RESTARTS AGE
hello-minikube-7df785b6bb-v2phl 1/1 Running 0 5m51s
查看 pod 的信息
sudo kubectl describe pod hello-minikube
describe pod 的返回
Name: hello-minikube-7df785b6bb-mw6kv
Namespace: default
Priority: 0
Node: lin-virtualbox/100.98.137.196
Start Time: Wed, 10 Jun 2020 16:30:18 +0800
Labels: app=hello-minikube
pod-template-hash=7df785b6bb
Annotations: <none>
Status: Running
IP: 172.17.0.6
IPs:
IP: 172.17.0.6
Controlled By: ReplicaSet/hello-minikube-7df785b6bb
Containers:
echoserver:
Container ID: docker://ca6c7070ef7afc260f6fe6538da49e91bc60ba914b623d6080b03bd2886343b3
Image: registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10
Image ID: docker-pullable://registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver@sha256:56bec57144bd3610abd4a1637465ff491dd78a5e2ae523161569fa02cfe679a8
Port: <none>
Host Port: <none>
State: Running
Started: Wed, 10 Jun 2020 16:30:21 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-znf6q (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-znf6q:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-znf6q
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
查看 deployment 的状态
sudo kubectl get deployment
get deployment 的返回
NAME READY UP-TO-DATE AVAILABLE AGE
hello-minikube 1/1 1 1 80m
查看 service 的状态
sudo minikube service hello-minikube --url
# or
sudo minikube service hello-minikube
返回
http://100.98.137.196:31526
# or
|-----------|----------------|-------------|-----------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|-----------------------------|
| default | hello-minikube | 8080 | http://100.98.137.196:31526 |
|-----------|----------------|-------------|-----------------------------|
向 echoserver 发送请求
curl -X POST -d '{"abc":123}' http://100.98.137.196:31526/api/v1/hello
返回
Hostname: hello-minikube-7df785b6bb-v2phl
Pod Information:
-no pod information available-
Server values:
server_version=nginx: 1.13.3 - lua: 10008
Request Information:
client_address=172.17.0.1
method=POST
real path=/api/v1/hello
query=
request_version=1.1
request_scheme=http
request_uri=http://100.98.137.196:8080/api/v1/hello
Request Headers:
accept=*/*
content-length=11
content-type=application/x-www-form-urlencoded
host=100.98.137.196:31384
user-agent=curl/7.47.0
Request Body:
{"abc":123}
删除 service
sudo kubectl delete services hello-minikube
删除 service 后 Pod 不受影响还在 running
删除 deployment 后 Pod 才会被删除
sudo kubectl delete deployment hello-minikube