kubectl初始化
云计算 k8s kubectl
2019年4月9日

介绍

使用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

最后修改于: 2023年8月9日 17:05