498. 【kubernetes】好用的-kubectl-命令

本文介绍了如何使用kubectl命令来实现Pod的端口映射到宿主机,以便于测试服务;编辑运行中的资源对象,如Pod,以直接修改其配置;以及查看配置文件与当前运行资源的差异,帮助跟踪滚动升级后的版本变化。
  1. 将 Pod 的端口号映射到宿主机(通常用于测试)
    命令格式:kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]
    将 Pod 的 80 端口映射到宿主机的 8888 端口,客户端即可通过 http://:8888 访问容器服务:
[root@k8s0 workspace_test]#  kubectl port-forward --address 0.0.0.0 pod/nginx 8887:80
Forwarding from 0.0.0.0:8887 -> 80

Handling connection for 8887
Handling connection for 8887
  1. 在线编辑运行的资源对象
    命令格式:kubectl edit (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]
    例如使用下面的命令编辑运行中的一个 Pod:
kubectl edit pod nginx
  • 在命令运行之后,会通过 YAML 格式展示该对象的文本格式定义,用户可以对代码进行编辑和保存,从而完成对在线资源的直接修改。
  1. 查看配置文件与当前系统中正在运行的资源对象的差异
    命令格式: kubectl diff -f FILENAME [option]
    例如使用下面的命令查看多次滚动升级后的版本差异:
[root@cxxxxxx1 kube-xxxxx-client]#  kubectl diff -f xxxxx-client-deployment.yaml 
diff -u -N /tmp/LIVE-436018550/apps.v1.Deployment.default.xxxxx-client-deployment /tmp/MERGED-425699421/apps.v1.Deployment.default.xxxxx-client-deployment
--- /tmp/LIVE-436018550/apps.v1.Deployment.default.xxxxx-client-deployment      2022-11-21 13:02:19.093794169 +0800
+++ /tmp/MERGED-425699421/apps.v1.Deployment.default.xxxxx-client-deployment    2022-11-21 13:02:19.125794027 +0800
@@ -4,7 +4,7 @@
   annotations:
     deployment.kubernetes.io/revision: "335"
   creationTimestamp: "2020-10-24T20:04:21Z"
-  generation: 335
+  generation: 336
   labels:
     app: xxxxx-client-deployment
   name: xxxxx-client-deployment
@@ -31,7 +31,7 @@
         app: xxxxx-client-pod
     spec:
       containers:
-      - image: junfenghe/xxxxx-client:5.8.19
+      - image: junfenghe/xxxxx-client:3.2.22
         imagePullPolicy: IfNotPresent
         name: xxxxx-client
         ports:
exit status 1
  • 可以看到 image 的版本,已经从3.2.22 升级到了 5.8.19 了。
### 使用 OpenSSL 创建与 CA 颁发证书的命令 #### 创建 CA 证书和私钥 ```bash openssl req -x509 -newkey rsa:2048 -nodes -keyout ca-key.pem -out ca.pem -days 3650 ``` 该命令的解释如下: - `-x509`:指定生成自签名的 X.509 证书。 - `-newkey rsa:2048`:生成一个新的 2048 位 RSA 私钥。 - `-nodes`:表示私钥不加密。 - `-keyout ca-key.pem`:将生成的私钥保存为 `ca-key.pem`。 - `-out ca.pem`:将生成的自签名 CA 证书保存为 `ca.pem`。 - `-days 3650`:指定证书的有效期为 3650 天。 #### CA 颁发证书 ```bash openssl x509 -req -in admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out admin.crt -days 365 ``` 该命令是基于引用[1]调整为通用格式,其解释如下: - `-req`:表示处理证书签名请求(CSR)。 - `-in admin.csr`:指定输入的证书签名请求文件为 `admin.csr`。 - `-CA ca.pem`:指定 CA 证书文件。 - `-CAkey ca-key.pem`:指定 CA 的私钥文件。 - `-CAcreateserial`:创建 CA 的序列号文件(如果不存在)。 - `-out admin.crt`:将颁发的证书保存为 `admin.crt`。 - `-days 365`:指定颁发的证书有效期为 365 天。 ### Kubernetes 设置集群、用户、上下文信息命令 #### 设置集群参数 ```bash kubectl config set-cluster kubernetes \ --certificate-authority=ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig ``` 该命令基于引用[4],其解释如下: - `kubectl config set-cluster kubernetes`:设置名为 `kubernetes` 的集群配置。 - `--certificate-authority=ca.pem`:指定用于验证 API 服务器证书的 CA 证书文件。 - `--embed-certs=true`:将证书嵌入到 `kubeconfig` 文件中。 - `--server=${KUBE_APISERVER}`:指定 API 服务器的地址。 - `--kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig`:指定 `kubeconfig` 文件的路径。 #### 正确性验证 - **OpenSSL 命令**:生成的文件可以通过 `openssl` 命令进行验证。例如,查看 CA 证书信息: ```bash openssl x509 -in ca.pem -noout -text ``` 查看颁发的证书信息: ```bash openssl x509 -in admin.crt -noout -text ``` - **Kubernetes 命令**:可以通过 `kubectl` 命令查看 `kubeconfig` 文件是否正确设置: ```bash kubectl config view --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值