第五章 Kubernetes快速入门

2022-01-23 05:31:23 浏览数 (2)

安装必备工具

安装包管理器与cURL

macOS安装homebrew

代码语言:javascript复制
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后查看版本和帮助

代码语言:javascript复制
brew --version        #查看homebrew当前版本以及是否安装成功
brew --help           #了解homebrew有哪些可用的命令

Windows安装Chocolate

管理员模式打开Powershell

代码语言:javascript复制
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

查看帮助

代码语言:javascript复制
choco help           #了解Chocolatey有哪些命令
choco -v             #查看版本号

安装kubectl与minikube

kubectl是Kubernetes的命令行工具,Minikube可以在本地部署Kubernetes

macOS

代码语言:javascript复制
brew install kubectl       #安装kubectl
brew install minikube      #安装minikube
​

Windows

代码语言:javascript复制
choco install kubernetes-cli    #安装kubectl
choco install minikube          #安装minikube

查看是否安装成功

代码语言:javascript复制
kubectl version --client   #测试安装的版本
minikube version           #minikube版本信息

注意,Windows上后续的命令最好还是在当前的powershell中操作,否则在其他命令行中可能无法识别命令。

本地创建Kubernetes集群

本地启动单节点Kubernetes集群

代码语言:javascript复制
minikube start 

启动完成后,查看控制台

代码语言:javascript复制
minikube dashboard

通过Kubectl连接kubernetes集群

配置Kubeconfig

Kubernetes集群可以通过Kuberctl连接控制,如同传统服务器用SSH客户端一样。

进入EKS容器服务,选择昨天创建的容器,选择【基本信息】,滚动到下方,打开外网访问,输入本机公网IP地址。

本机公网IP地址可以百度搜索【ip】获取。

点击证书管理,下载证书,这里的证书其实就是kubeconfig文件。

macOS或Linux:下载kubeconfig配置文件到本地,并执行以下指令以合并多个集群的config(其中~/Downloads/cls-****-config需要更换成你kubeconfig下载到本地后的实际地址):

代码语言:javascript复制
KUBECONFIG=~/.kube/config:~/Downloads/cls-****-config kubectl config view --merge --flatten > ~/.kube/config
export KUBECONFIG=~/.kube/config

Windows:下载kubeconfig配置文件到本地,并执行以下指令以合并多个集群的config(其中~/Downloads/cls-****-config需要更换成你kubeconfig下载到本地后的实际地址):

代码语言:javascript复制
$Env:KUBECONFIG=("$HOME.kubeconfig;$HOME.kubec1.kubeconfig")
echo $Env:KUBECONFIG

使用kubectl连接EKS

完成配置后,可以查看云端环境

代码语言:javascript复制
kubectl config view         #显示合并后的kubeconfig设置,或者显示指定的kubeconfig配置文件。   
kubectl config get-contexts #查看kubeconfig中的环境

切换到云端环境

代码语言:javascript复制
kubectl config use-context cls-****-context-default #切换到云端K8s集群
kubectl config use-context minikube   #切换到本地集群
kubectl config use-context cls-****-context-default #切换回云端集群

切换完成后,可以看到提示:

代码语言:javascript复制
Switched to context "cls-6khzid9a-****-context-default".

要想了解Kubernetes集群的版本信息,可以用下面命令

代码语言:javascript复制
kubectl version
kubectl cluster-info

其中client version指的是本地kubectl命令行工具的版本,而server version指的是EKS或minikube kubernetes的版本。

注意:使用kubectl cluster-info,会出现一个ip地址,这个是腾讯云的ip,进去是一个控制面板。如果访问不了,可能是IP地址白名单的问题,需要在https://www.ip138.com/ 这个网站上,再查一下当前本机的ip地址。

我的电脑是挂了代理,ip变成了中国香港,所以访问是403禁止访问。

接着我再到集群APIServer里面加一个代理的IP就好了。(其实也不行,浏览器访问是禁止的)

测试是否能够正常访问集群

代码语言:javascript复制
kubectl get node  

查看集群内容器

代码语言:javascript复制
kubectl get pods --all-namespaces

Dashboard与命令行

关于Node

代码语言:javascript复制
kubectl get nodes                   #获取节点列表
kubectl describe node <node的名称>  #了解节点的所有状态
kubectl top node <node的名称>       #了解节点的内存和CPU使用情况

关于Pod

腾讯云控制台查看Pod

代码语言:javascript复制
kubectl get pods -o wide          #显示Pod列表
kubectl describe pod <pod的名称>  #查看Pod的详细信息
kubectl top pod <pod的名称>       

关于工作负载Deployment

代码语言:javascript复制
kubectl get deployment   #获取所有的Deployment
kubectl describe deployment <deployment的名称>

关于命名空间Namespace

类似文件夹,删除后里面的对象都会被销毁,每个Kubernetes集群默认会有一个default的命名空间。

代码语言:javascript复制
kubectl get namespaces

服务service

代码语言:javascript复制
kubectl get services
kubectl describe service <service的名称>

管理正在运行的Pod

注意:云端也需要安装kubectl工具,否则命令无法使用。

了解Pod容器运行情况

代码语言:javascript复制
kubectl get pods
kubectl logs <pod的名称> 
kubectl exec -it <pod的名称> -- /bin/bash
# kubectl exec --stdin --tty <pod的名称>  -- /bin/sh ,推荐使用bash

总结

今天主要学习了kubectl工具的安装和命令使用,对Kubernetes有了大致的了解。由于昨天把集群Pod和Service删掉了,今天又重新创建了一遍。既然如此,那我就顺便把第六章的内容也学习了吧。

0 人点赞