kubectl 是用来与 Kubernetes 集群通讯的命令行工具。通过 Kubectl 可以在 Kubernetes 集群上完成如下操作:
kubectl 适配了不同操作系统不同指令架构的安装版本
生产环境的 kubernetes 集群安装涉及到较多细节,也不适合在个人机器上安装和学习。开发者学习 kubernetes 可以使用的环境有几种:
从成本上来说,在开发者主机上安装和配置是比较方便的。以学习为目的,在个人主机上安装和配置 kubernetes 有两个可选的套装
kind 或者 minikube 不会安装 kubectl,因此kubectl是需要独立安装的。生产环境上的集群安装和配置则不建议使用 kind 或者 minikube。
创建了不同名字的 k8s 集群,kubectl 是和哪个集群通讯的呢?可以通过以下命令先看下全局信息。
kubectl config view
内容如下:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://127.0.0.1:60712
name: kind-hello-k8s
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://127.0.0.1:50225
name: kind-test
- cluster:
certificate-authority: /Users/feilong/.minikube/ca.crt
extensions:
- extension:
last-update: Wed, 16 Mar 2022 19:13:01 CST
provider: minikube.sigs.k8s.io
version: v1.25.2
name: cluster_info
server: https://127.0.0.1:49371
name: minikube
contexts:
- context:
cluster: kind-hello-k8s
user: kind-hello-k8s
name: kind-hello-k8s
- context:
cluster: kind-test
user: kind-test
name: kind-test
- context:
cluster: minikube
extensions:
- extension:
last-update: Wed, 16 Mar 2022 19:13:01 CST
provider: minikube.sigs.k8s.io
version: v1.25.2
name: context_info
namespace: default
user: minikube
name: minikube
current-context: kind-hello-k8s
kind: Config
preferences: {}
users:
- name: kind-hello-k8s
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
- name: kind-test
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
- name: minikube
user:
client-certificate: /Users/feilong/.minikube/profiles/minikube/client.crt
client-key: /Users/feilong/.minikube/profiles/minikube/client.key
主要包括这几类信息:
通过kubectl config get-contexts 查看下有哪些集群上下文,通过kubectl config current-context确认当前 k8s 集群上下文。
通过kubectl get nodes查看当前 kubectl 连接的集群kind-hello-k8s的节点列表。
通过kubectl config use-context kind-test 切换连接的 k8s 集群。
在根目录下创建一个 k8s 的部署配置文件,文件是 yaml 格式,文件名为k8s_python_sample_code.deployment.yml,内容如下,注意name字段不能是下划线命名风格:
文件内容案例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-native-hello-py
labels:
app: cloud-native-hello-py
spec:
replicas: 3
selector:
matchLabels:
app: cloud-native-hello-py
template:
metadata:
labels:
app: cloud-native-hello-py
spec:
containers:
- name: cloud-native-hello-py
image: fanfeilong/cloud_native_hello_py
ports:
- containerPort: 1024
通过一组操作来部署和查看状态:

k8s 通过 deployment 部署,deployment 管理副本集合ReplicaSet ,而 ReplicaSet 包含多个Pod。那么Pod又是什么呢?
Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。Pod是 K8s 的最小可部署单元。
通过命令kubectl get rs直观地看下 ReplicaSet

通过命令kubectl get pods直观地看下 pods

可以看到有一个 ReplicaSet,管理三个 Pods。ReplicaSet 管理多个 Pod,确保以指定个数的副本运行部署的服务。
ReplicaSet 的信息解释:
Pod的列信息大同小异:
经过 deployment,cloud_native_hello_py 项目的目录结构如下:
.
├── Dockerfile
├── README.md
├── k8s.deployment.yaml
└── src
├── main.py
└── requirements.txt
在根目录下增加一个文件k8s.service.yaml,内容如下:
apiVersion: v1
kind: Service
metadata:
name: cloud-native-hello-py
spec:
selector:
app: cloud-native-hello-py
ports:
- protocol: TCP
port: 1024
targetPort: 1024
注意 targetPort 必须和 deployment 步骤里容器的导出端口一致
使用如下的命令来创建服务
kubectl create -f k8s.service.yaml

对服务做下端口转发 
使用浏览器直接访问 
贡献者:幻灰龙
在生产环境上,例如 centos linux系统上,使用 kubelet, kubectl, kubeadm 三件套可以部署 k8s 集群。
cenos 上安装 k8s 步骤如下:
例如,安装三件套的命令如下
sudo yum install -y kubectl kubelet kubeadm
sudo systemctl enable kubelet
sudo systemctl start kubelet
使用 kubeadm 初始化集群的命令如下
kubeadm init --apiserver-advertise-address=0.0.0.0 \
--apiserver-cert-extra-sans=127.0.0.1 \
--image-repository=registry.aliyuncs.com/google_containers \
--ignore-preflight-errors=all \
--kubernetes-version=v1.21.1 \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.18.0.0/16
贡献者:幻灰龙
到目前为止,我们从 k8s 命令行安装和操作的角度理解到了 k8s 的很多基本概念:
我们也掌握了安装 k8s 的概念
现在,我们简要介绍下 k8s 的核心组件
参考:https://edu.csdn.net/skill/cloud_native/
本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
主页:共饮一杯无的博客汇总👨💻保持热爱,奔赴下一场山海。🏃🏃🏃
