minibuke搭建笔记

部署准备

  • centos7服务器
  • Docker最新版本
  • https://kubernetes.io/docs/tasks/tools/install-minikube/
  • https://kubernetes.io/docs/setup/learning-environment/minikube/

安装

第一步: 检查Linux是否支持虚拟化,请运行以下命令并验证输出是否为非空 。

[root@minikube ~]# grep -E --color 'vmx|svm' /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

使用的是VMware Workstation 虚拟出来的镜像, 如果上面验证的结果为空,需要在创建centos的虚拟机的时候进行编辑,处理器开启虚拟化功能:
在这里插入图片描述
第二步: 确保您已安装kubectl ,若没有则通过以下三种方式安装,选择其一即可。

①: 使用curl安装Kubectl二进制文件

# 1.使用命令下载最新版本 或 下载特定版本
# 最新版本
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
# 特定版本, 执行了上面就不用再执行此处
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/linux/amd64/kubectl

# 2.使kubectl二进制可执行
chmod +x ./kubectl

# 3.将二进制文件移到PATH中
sudo mv ./kubectl /usr/local/bin/kubectl

# 4.测试以确保您安装的版本是最新或特定的
kubectl version

上面执行最后一步 kubectl version 会出现:

[root@minikube ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?

先不管继续之后的操作;

②: 使用本机软件包管理进行安装(使用的是aliyun 的镜像)

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubectl

③: 快速安装(未尝试)

# 如果您使用的是Ubuntu或其他支持快照包管理器的Linux发行版,则可以将kubectl作为快照应用程序使用
# 1.切换到快照用户并运行安装命令
sudo snap install kubectl --classic
# 2.测试以确保您安装的版本是最新或特定的
kubectl version

第三步: 安装虚拟机监控程序

如果尚未安装管理程序,请立即安装以下之一:

注意: Minikube还支持--vm-driver=none在主机而非VM上运行Kubernetes组件的选项。使用此驱动程序需要Docker和Linux环境,但不需要管理程序。当使用none驱动程序时,建议使用Docker的apt安装。docker的快照安装不适用于minikube。

安装VirtualBox(可先忽略)

#下载 deb包
wget https://download.virtualbox.org/virtualbox/6.1.0/VirtualBox-6.1-6.1.0_135406_el7-1.x86_64.rpm

# 安装
yum install -y VirtualBox-6.1-6.1.0_135406_el7-1.x86_64.rpm
[root@minikube k8s]# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel kernel-devel-3.10.0-957.el7.x86_64
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel kernel-devel-3.10.0-957.el7.x86_64

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

yum install kernel-devel -y

第四步: 安装 minikube

  • 使用软件包安装Minikube: 有针对Minikube的实验软件包 ; 可以从GitHub上Minikube的发行页面中找到Linux(AMD64)软件包 ;
  • 通过直接下载安装Minikube.

如果您不是通过软件包安装的,则可以下载独立的二进制文件并使用

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

这是一种将Minikube可执行文件添加到您的路径的简单方法

sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/

第五步: 清理本地状态

如果以前安装过Minikube,然后运行 :

minikube start

并且, minikube start返回错误 :

machine does not exist

那么, 那么您需要清除minikube的本地状态 :

minikube delete

使用, 确认安装成功

这个简短的演示指导您如何在本地启动,使用和删除Minikube 。 请按照下面给出的步骤开始和探索Minikube 。

1. 启动Minikube并创建集群 :

# minikube start
minikube start --image-repository=registry.aliyuncs.com/google_containers --vm-driver=none

注意:google镜像需要翻墙,这里我们使用国内阿里镜像源。由于我们是在Centos虚拟机上做的测试,所以将设置 “vm-driver=none”

一旦minikube start 完成后,运行下面的命令检查集群的状态, 如果您的集群正在运行,则输出minikube status应类似于:

[root@minikube k8s]# minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

2. 现在,您可以使用kubectl与集群进行交互 :

让我们使用名为echoserver的现有映像创建一个Kubernetes部署,这是一个简单的HTTP服务器,并使用–port将其公开在端口8080上。

kubectl create deployment hello-minikube --image=registry.aliyuncs.com/google_containers/echoserver:1.10

3. 要访问hello-minikube部署,请将其作为服务公开 :

kubectl expose deployment hello-minikube --type=NodePort --port=8080
选项 "--type = NodePort" 指定服务的类型。

输出类似于以下内容:

service/hello-minikube exposed

4. hello-minikube Pod现在已启动,但是您必须等到Pod启动后才能通过公开的服务访问它。

检查Pod是否已启动并正在运行:

[root@minikube k8s]# kubectl get pod
NAME                              READY   STATUS         RESTARTS   AGE
hello-minikube-797f975945-rkmx6   0/1     ErrImagePull   0          4m20s

如果输出将状态显示为ContainerCreating,则仍在创建Pod:

NAME                              READY     STATUS              RESTARTS   AGE
hello-minikube-3383150820-vctvh   0/1       ContainerCreating   0          3s

如果输出显示状态为正在运行,则表明Pod已启动并正在运行:

NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-3383150820-vctvh   1/1       Running   0          13s

5. 获取公开服务的URL以查看服务详细信息 :

[root@minikube k8s]# minikube service hello-minikube --url
http://192.168.227.144:30284

6. 要查看本地集群的详细信息,请在浏览器中复制并粘贴作为输出获得的URL。
输出类似于以下内容:

Hostname: hello-minikube-7c77b68cff-8wdzq

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=GET
    real path=/
    query=
    request_version=1.1
    request_scheme=http
    request_uri=http://192.168.99.100:8080/

Request Headers:
    accept=*/*
    host=192.168.99.100:30674
    user-agent=curl/7.47.0

Request Body:
    -no body in request-

如果您不再希望服务和群集运行,则可以将其删除。

7. 删除hello-minikube服务 :

kubectl delete services hello-minikube
  1. 删除hello-minikube部署:
kubectl delete deployment hello-minikube
  1. 停止本地Minikube集群:
minikube stop
  1. 删除本地Minikube集群:
minikube delete

管理集群

一个简单的流程

kubectl create deployment hello --image=karthequian/helloworld:latest

kubectl expose deployment hello --type=NodePort --port=8080

# 查看pod的信息
kubectl get pod
	
# 查看service暴露出来的url
minikube service hello --url

# 检查服务
kubectl get svc

常用命令

kubectl get pod  									# 查询列表
kubectl get pods -o json  							# 查询列表, json 格式显示
kubectl describe pod PodName  						# 查询详细,描述命令
kubectl delete svc kubernetes-dashboard  			# 删除服务
kubectl get deployment  							# 查询部署
kubectl delete deployment hello   					# 删除

kubectl get pods --all-namespaces  					# 列出所有 namespace 中的所有 pod
kubectl get pods -o wide  							# 查看 pod 并显示详细信息
kubectl get services   								# 查看  service

启动集群

minikube start命令可用于启动集群。 该命令创建并配置运行单节点Kubernetes集群的虚拟机。 此命令还将配置您的kubectl安装程序以与此集群通信。

注意:

如果您使用Web代理,则需要将此信息传递给minikube start命令:
https_proxy=<my proxy> minikube start --docker-env http_proxy=<my proxy> --docker-env https_proxy=<my proxy> --docker-env no_proxy=192.168.99.0/24

不幸的是,仅设置环境变量是行不通的。

Minikube还会创建一个“ minikube”上下文,并将其设置为kubectl中的默认值。要切换回此上下文,请运行以下命令:

kubectl config use-context minikube

指定Kubernetes版本

您可以通过将–kubernetes-version字符串添加到minikube start命令中来指定供Minikube使用的Kubernetes版本。例如,要运行版本v1.17.0,应运行以下命令:

minikube start --kubernetes-version v1.17.0

指定VM驱动程序
您可以通过将–vm-driver=<enter_driver_name>标志添加到来更改VM驱动程序minikube start。例如,命令将是。

minikube start --vm-driver=<driver_name>

FAQ

1. 状态是 ImagePullBackOff

[root@minikube k8s]# kubectl get pod
NAME                              READY   STATUS             RESTARTS   AGE
hello-minikube-797f975945-rkmx6   0/1     ImagePullBackOff   0          22m
[root@minikube k8s]# kubectl describe pod hello-minikube-797f975945-rkmx6 

找到 Events:

Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  26m                  default-scheduler  Successfully assigned default/hello-minikube-797f975945-rkmx6 to minikube
  Normal   Pulling    24m (x4 over 26m)    kubelet, minikube  Pulling image "k8s.gcr.io/echoserver:1.10"
  Warning  Failed     24m (x4 over 26m)    kubelet, minikube  Failed to pull image "k8s.gcr.io/echoserver:1.10": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Warning  Failed     24m (x4 over 26m)    kubelet, minikube  Error: ErrImagePull
  Normal   BackOff    24m (x6 over 26m)    kubelet, minikube  Back-off pulling image "k8s.gcr.io/echoserver:1.10"
  Warning  Failed     111s (x97 over 26m)  kubelet, minikube  Error: ImagePullBackOff

原因是被墙了, 可以尝试使用 docker pull xxx 拉取一个存在镜像

[root@minikube k8s]# kubectl create deployment hello --image=karthequian/helloworld:latest
deployment.apps/hello created

运行成功!

[root@minikube k8s]# kubectl get pods
NAME                              READY   STATUS             RESTARTS   AGE
hello-57c675fcdc-2mf52            1/1     Running            0          18s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值