介绍
使用kubectl来管理Kubernetes集群。
可以在 https://github.com/kubernetes/kubernetes 找到更多的信息。
安装
https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl
配置文件
# 默认路径:~/.kube/
# 查看可用配置文件
kubectl config get-contexts
# 切换配置文件
kubectl config use-context name-of-k8s
命令行扩展
kubectl-shell
pip install kube-shell
zshrc自动补全
source <(kubectl completion zsh)
echo "source <(kubectl completion zsh)" >> ~/.zshrc
hello-world
创建一个单节点应用
# hello-word.yaml
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec: # specification of the pod’s contents
restartPolicy: Never
containers:
- name: hello
image: "ubuntu:14.04"
command: ["/bin/echo", "hello", "world"]
Replication Controller
创建一个固定pods数的应用集,如果运行的太多,它会杀掉一些;如果运行的太少,它会启动一些。
# nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Horizontal Pod Autoscaling
根据pod节点的设备性能(CPU使用率或应用自定义metrics),动态调整pod数量。
https://www.kubernetes.org.cn/horizontal-pod-autoscaling
连接应用
创建service
为应用添加服务层,将服务暴露到外部。
# nginxsvc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginxsvc
labels:
app: nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
app: nginx
确认DNS pod是否启用
╰─$ kubectl get svc kube-dns --namespace=kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP 52d
创建curlpod用于检测
# curlpod.yaml
apiVersion: v1
kind: Pod
metadata:
name: curlpod
spec:
containers:
- image: radial/busyboxplus:curl
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: curlcontainer
restartPolicy: Always
╰─$ kubectl exec curlpod -- nslookup nginxsvc
Server: 10.43.0.10
Address 1: 10.43.0.10 kube-dns.kube-system.svc.cluster.local
Name: nginxsvc
Address 1: 10.43.149.64 nginxsvc.gogs.svc.cluster.local