kubectl 常用命令
kubectl
Kubectl get 列出资源
kubectl describe 显示有关资源的详细信息
kubectl logs 打印 pod 和其中容器的日志
kubectl exec 在 pod 中的容器上执行命令
kubectl cluster-info –context kind-kind 切换集群,获取集群信息
1 | # 帮助信息 |
Linux安装Clash
下载对应版本。
1
curl -LO https://github.com/Dreamacro/clash/releases/download/v1.10.6/clash-linux-amd64-v1.10.6.gz
使用
gunzip
解压文件1
2
3
4
5
6
7gunzip clash-linux-amd64-v1.10.6.gz
# 改名
mv clash-linux-amd64-v1.10.6 ./clash
# 添加可执行权限
chmod +x clash设置配置文件
config.yaml
启动
1
2
3./clash -d .
# -d 指定配置文件目录
# 如果是直接执行 ./clash,则配置文件放在 ~/.config/clash设置系统代理
1
2
3export http_proxy="http://127.0.0.1:xxxx"
export https_proxy="http://127.0.0.1:xxxx"
# 可以添加到 ~/.bashrc 以永久生效远程管理
在配置文件中可以看到
1
external-controller: '127.0.0.1:9090'
可以使用 Clash远程管理页面 进行配置。
设置密码:
1
secret: 'password'
Linux修改主机名
临时修改主机名
1 | sudo hostname <new-hostname> |
这条命令不会更改/etc/hostname文件中的静态主机名(static hostname),它更改的只是临时主机名(transient hostname)。所以重启计算机后会回到旧的主机名。
永久修改主机名
如果想永久改变主机名,可以使用hostnamectl
命令,或者使用vim手动修改/etc/hostname
文件。
1 | sudo hostnamectl set-hostname <new-hostname> |
查看当前主机名
1 | sudo hostnamectl |
参考
Linux修改用户名和用户文件夹
修改用户名
使用usermod
来修改用户名。
1 | usermod -l new_username old_username |
例子:假设我们有一个名叫 dan
的用户想要重命名为 susan
,那么在终端下执行下面命令:
1 | sudo usermod -l susan dan |
这只会更改用户名,而其他的东西,比如用户组,家目录,UID 等都保持不变。
注意: 你需要从要改名的帐号中登出并杀掉该用户的所有进程,要杀掉该用户的所有进程可以执行下面命令:
1 | sudo pkill -u dan |
修改家目录
要同时更改家目录,我们需要在执行 usermod
命令的同时加上 -d
选项:
1 | sudo usermod -d /home/susan -m susan |
更改用户 UID
执行下面命令修改用户 UID:
1 | sudo usermod -u 2000 susan |
这里 2000
就是用户的新 UID。
修改用户组名
要把用户组名从 dan
修改为 susan
,我们需要使用 groupmod
命令。使用下面命令来修改用户组名:
1 | groupmod -n susan dan |
做完修改后,可以使用 id
命令来检查:
1 | is susan |
参考
minikube访问应用程序
访问应用程序
Kubernetes 中有两大类服务:
- 节点端口
- 负载均衡器
minikube 两者都支持。 继续阅读!
节点端口访问
NodePort 服务是将外部流量直接传输到您的服务的最基本方式。 NodePort,顾名思义,打开一个特定的端口,任何发送到这个端口的流量都会被转发给服务。
使用 service 命令获取 NodePort
我们还有一个获取 minikube IP 和服务的快捷方式 NodePort
:
1 | minikube service --url <service-name> |
使用 kubectl 获取 NodePort
minikube VM 通过主机专用 IP 地址暴露给主机系统,该 IP 地址可以通过 minikube ip
命令。 任何类型的服务 NodePort
可以在 NodePort 上通过该 IP 地址访问。
要确定服务的 NodePort,您可以使用 kubectl
像这样的命令(注意 nodePort
以小写开头 n
在 JSON 输出中):
1 | kubectl get service <service-name> --output='jsonpath="{.spec.ports[0].nodePort}"' |
增加 NodePort 范围
默认情况下,minikube 只公开端口 30000-32767。 如果这对您不起作用,您可以使用以下方法调整范围:
1 | minikube start --extra-config=apiserver.service-node-port-range=1-65535 |
此标志还接受以逗号分隔的端口和端口范围列表。
负载均衡器访问
LoadBalancer 服务是向 Internet 公开服务的标准方式。 使用这种方法,每个服务都会获得自己的 IP 地址。
使用 minikube tunnel
服务类型 LoadBalancer
可以通过暴露 minikube tunnel
命令。 它必须在单独的终端窗口中运行以保持 LoadBalancer
跑步。 终端中的 Ctrl-C 可用于终止清理网络路由的进程。
例子:
在单独的终端中运行隧道
它会要求输入密码。
1 | minikube tunnel |
minikube tunnel
作为一个进程运行,使用集群的 IP 地址作为网关,在主机上创建到集群的服务 CIDR 的网络路由。 隧道命令将外部 IP 直接暴露给在主机操作系统上运行的任何程序。
隧道输出示例
1 | [sudo] password for k1: |
创建 Kubernetes 部署
1 | kubectl create deployment hello-minikube1 --image=k8s.gcr.io/echoserver:1.4 |
创建一个 kubernetes 服务类型 LoadBalancer
1 | kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8080 |
检查外部 IP
1 | kubectl get svc |
1 | kubectl get svc |
请注意,如果没有 minikube 隧道,kubernetes 会将外部 IP 显示为“待处理”。
在浏览器中尝试
在浏览器中打开(确保没有设置代理)
1 | http://REPLACE_WITH_EXTERNAL_IP:8080 |
每个服务都将获得自己的外部 ip。
清理孤立路由
如果 minikube tunnel突然关闭,它可能会在您的系统上留下孤立的网络路由。 如果发生这种情况,~/.minikube/tunnels.json 文件将包含该隧道的条目。 要删除孤立路由,请运行:
1 | minikube tunnel --cleanup |
笔记: --cleanup
标志的默认值为 true
.
避免密码提示
添加路由需要用户root权限,因此运行方式有差异 minikube tunnel取决于操作系统。 如果您想避免输入 root 密码,请考虑为“ip”和“route”命令设置 NOPASSWD:
https://superuser.com/questions/1328452/sudoers-nopasswd-for-single-executable-but-allowing-others
minikube中的kubectl
kubectl
在 minikube 中使用 kubectl
默认情况下, kubectl 被配置为访问 kubernetes 集群控制平面 在 minikube 里面的时候 minikube start命令被执行。
然而,如果 kubectl没有在本地安装,minikube 已经包含 kubectl 可以这样使用:
1 | minikube kubectl -- <kubectl commands> |
为 kubectl 设置别名以便于使用。
1 alias kubectl="minikube kubectl --"或者,您可以创建一个符号链接到 minikube 的名为“kubectl”的二进制文件。
1 ln -s $(which minikube) /usr/local/bin/kubectl
获取节点
1
minikube kubectl -- get pods
在 Kubernetes 集群中创建部署
1
2
3minikube kubectl -- create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
# 使用阿里云镜像
kubectl create deployment balanced --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.4使用 NodePort 服务公开部署
1
minikube kubectl -- expose deployment hello-minikube --type=NodePort --port=8080
获取帮助
1
minikube kubectl -- --help
Shell 自动补全
应用别名或符号链接后,您可以按照 https://kubernetes.io/docs/tasks/tools/included/optional-kubectl-configs-bash-linux/ 启用 shell-autocompletion。
参考
minikube安装和使用
minikube 开始
minikube 是本地 Kubernetes,专注于让 Kubernetes 易于学习和开发。
您所需要的只是 Docker(或类似兼容的)容器或虚拟机环境,而 Kubernetes 只需一个命令即可: minikube start
你需要什么
- 2 个 CPU 或更多
- 2GB 可用内存
- 20GB 可用磁盘空间
- 网络连接
- 容器或虚拟机管理器,例如: Docker 、 Hyperkit 、 Hyper-V 、 KVM 、 Parallels 、 Podman 、 VirtualBox 或 VMware Fusion/Workstation
这里使用docker,提前安装好docker。
一、安装
- linux
安装最新的 minikube 稳定 版本 x86-64 Linux 使用 二进制下载 :1
2curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
二、启动集群
从具有管理员访问权限的终端(但未以 root 身份登录),运行:
1 | minikube start |
如果 minikube 无法启动,请参阅 驱动程序页面 以获取设置兼容容器或虚拟机管理器的帮助。
三、与您的集群交互
如果您已经安装了 kubectl,您现在可以使用它来访问您闪亮的新集群:
1 | kubectl get po -A |
或者,minikube 可以下载适当版本的 kubectl,您应该可以像这样使用它:
1 | minikube kubectl -- get po -A |
您还可以通过将以下内容添加到您的 shell 配置中来使您的使用更轻松:
1 | alias kubectl="minikube kubectl --" |
最初,某些服务(例如 storage-provisioner)可能尚未处于运行状态。 这是集群启动期间的正常情况,并且会立即自行解决。 为了进一步了解您的集群状态,minikube 捆绑了 Kubernetes Dashboard,让您可以轻松适应新环境:
1 | minikube dashboard |
四、部署应用程序
创建一个示例部署并在端口 8080 上公开它:
1 | kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4 |
这可能需要一点时间,但是当您运行时,您的部署将很快出现:
1 | kubectl get services hello-minikube |
访问此服务的最简单方法是让 minikube 为您启动 Web 浏览器:
1 | minikube service hello-minikube |
或者,使用 kubectl 转发端口:
1 | kubectl port-forward service/hello-minikube 7080:8080 |
您的应用程序现在可以在 http://localhost:7080/ 访问。
您应该能够看到来自 nginx 的请求元数据,例如 CLIENT VALUES, SERVER VALUES, HEADERS RECEIVED和 BODY在应用程序输出中。 尝试更改请求的路径并观察 CLIENT VALUES. 类似地,您可以对它发出 POST 请求并观察身体出现在 BODY 输出部分。
负载均衡器部署
要访问 LoadBalancer 部署,请使用“minikube tunnel”命令。 这是一个示例部署:
1 | kubectl create deployment balanced --image=k8s.gcr.io/echoserver:1.4 |
在另一个窗口中,启动隧道以为“平衡”部署创建可路由 IP:
1 | minikube tunnel |
要查找可路由 IP,请运行此命令并检查 EXTERNAL-IP柱子:
1 | kubectl get services balanced |
五、管理您的集群
在不影响已部署应用程序的情况下暂停 Kubernetes:
1 | minikube pause |
取消暂停暂停的实例:
1 | minikube unpause |
停止集群:
1 | minikube stop |
增加默认内存限制(需要重新启动):
1 | minikube config set memory 16384 |
浏览易于安装的 Kubernetes 服务目录:
1 | minikube addons list |
创建第二个运行旧 Kubernetes 版本的集群:
1 | minikube start -p aged --kubernetes-version=v1.6.1 |
删除所有 minikube 集群:
1 | minikube delete --all |