kubectl run 的使用
1 | kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options] |
部署 redis:
1 | kubectl run redis --image='redis:alpine' |
输出:
1 | kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use |
kubectl get 的使用
1 | kubectl get deployment.apps/redis -o wide |
ReplicaSet 是一种较低级别的结构,允许进行扩容。
Deployment 主要是声明一种预期的状态,并且会将 Pod 托管给 ReplicaSet,而 ReplicaSet 则会去检查当前的 Pod 数量及状态是否符合预期,并尽量满足这一预期。
service 外部访问
Service 目前有 4 种类型:
1 | ClusterIP: 是 K8S 当前默认的 Service 类型。将 service 暴露于一个仅集群内可访问的虚拟 IP 上。 |
将 redis 服务暴露出来
1 | kubectl expose deploy/redis --port=6379 --protocol=TCP --target-port=6379 --name=redis-server |
ClusterIP 并不能直接通过外部进行访问,我们使用 port-forward 的方式让它可在集群外部访问:
1 | kubectl port-forward svc/redis-server 6379:6379 |
NodePort 的方式对外暴露服务:
1 | kubectl expose deploy/redis --port=6379 --protocol=TCP --target-port=6379 --name=redis-server-nodeport --type=NodePort |
这里需要注意的是这个端口范围其实是可以通过 kube-apiserver 的 service-node-port-range 进行配置的,默认是 30000-32767(通过kube-apiserver 的 service-node-port-range 进行配置)
如果使用的是 kind 安装 需要在 docker 内部访问(访问命令docker exec -it ${containerId} /bin/bash
)
Pod 扩容
1 | kubectl scale deploy/redis --replicas=2 |
参考资料: