K8s Kind使用

环境:rhel9.2

kubectl

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubectl
echo "exclude=kubectl" >> /etc/dnf/dnf.conf
kubectl version --output=yaml # 打印版本信息,当前为v1.27.3

版本信息如下:(因为cluster还没起来,所以没有server的信息

clientVersion:
  buildDate: "2023-06-14T09:53:42Z"
  compiler: gc
  gitCommit: 25b4e43193bcda6c7328a6d147b1fb73a33f1598
  gitTreeState: clean
  gitVersion: v1.27.3
  goVersion: go1.20.5
  major: "1"
  minor: "27"
  platform: linux/amd64
kustomizeVersion: v5.0.1

The connection to the server localhost:8080 was refused - did you specify the right host or port?

kind

安装kind

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# For ARM64
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kind --version # 当前版本为0.20.0

创建cluster

yum install -y podman # 安装podman
kind create cluster --name demo --wait 5m 
# 使用默认的node image创建cluster。https://hub.docker.com/r/kindest/node/。 
# kind 版本和镜像版本有对应关系,在release页面查看 https://github.com/kubernetes-sigs/kind/releases

输出:

enabling experimental podman provider
Creating cluster "demo" ...
 ✓ Ensuring node image (kindest/node:v1.27.3) 🖼 
 ✓ Preparing nodes 📦  
 ✓ Writing configuration 📜 
 ✓ Starting control-plane 🕹️ 
 ✓ Installing CNI 🔌 
 ✓ Installing StorageClass 💾 
 ✓ Waiting ≤ 5m0s for control-plane = Ready ⏳ 
 • Ready after 17s 💚
Set kubectl context to "kind-demo"
You can now use your cluster with:

kubectl cluster-info --context kind-demo

Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community

此时,查看podman的容器列表,可以看到:

# podman ps
CONTAINER ID  IMAGE                                                                                           COMMAND     CREATED        STATUS        PORTS                      NAMES
6313438e57a5  docker.io/kindest/node@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72              5 minutes ago  Up 5 minutes  127.0.0.1:39025->6443/tcp  demo-control-plane

使用kubectl查看cluster信息:

# kubectl version --output=yaml
clientVersion:
  buildDate: "2023-06-14T09:53:42Z"
  compiler: gc
  gitCommit: 25b4e43193bcda6c7328a6d147b1fb73a33f1598
  gitTreeState: clean
  gitVersion: v1.27.3
  goVersion: go1.20.5
  major: "1"
  minor: "27"
  platform: linux/amd64
kustomizeVersion: v5.0.1
serverVersion:
  buildDate: "2023-06-15T00:36:28Z"
  compiler: gc
  gitCommit: 25b4e43193bcda6c7328a6d147b1fb73a33f1598
  gitTreeState: clean
  gitVersion: v1.27.3
  goVersion: go1.20.5
  major: "1"
  minor: "27"
  platform: linux/amd64

# kubectl cluster-info         
Kubernetes control plane is running at https://127.0.0.1:39025
CoreDNS is running at https://127.0.0.1:39025/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

再看看 ~/.kube/config 集群配置文件:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EY3hPREV5TXpNME0xb1hEVE16TURjeE5URXlNek0wTTFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUFECjdUWUhBUUkyQUtDQlNOMzZaTm1YSVFnZFNrR0sxNTIySzhvclJHZlBmTVBueWJsbWNheTJzKzQxZ05nVUZPQm0KUGRNODIwbUNvdEY2U09nWHNULzI4cWdWL2pBRVB3bWhkMDJHa2k2VXZXWVNDb2hxRE10cHpDRks5U3VSZkdOSApsOG5JczlSR2RsYzVteXkyVXJwM3hYcEIyVThqYkxDcUdmOFJoSmVpK0ZmSzQxNUtqRkY0bGpyZmxvK1hwbk5OCnFCYXAxbUFpNmp1SzYzeDhpbDFFTWtvV3pCdmhQOWwvY2Y1bkRZNnAxcHh2cm5nUzR0UTFraitRRnhNMlovK3EKd05WbTZNUytMd044c1BhNE9sOGF3L3RmbGg5OVJscExzemNTTjlpRlRUNk5zdXYxdTJVc3ZHQkJLZVFRVUliVwpYaWZlU0plV1lVd01oTGp3a2ZjQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZQVVBFdCtPbzdPaFlZa0FsTkZjaTkwODlmaGJNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQWp6WWNJaWZqZzZxenloekdkZgpobmQwaVY2ZlEwcHI1SGNPVFdVL2lXRUtKbmJYdncvK1FVMjRIYmJaYU5GL01JaktRMDdReTdEZVBERGdRTGdvCkw5SFQ2ODFPeFJpU1dEWkMrUzBFRmRmMk82cEhtbnFOVDluQTN6VnRzOGFvZnljZ0JTamg0WFg2Z3ZMUFVVZDMKNDMxVG9hZUU0eDNtbWNDcGNUdTNZNk1sQm1ZcCtCVkdHZk0xTDJIenE3L0VNZWRCVU13Z2ZKVEhPL2w3d3ZwWApNWXF2c0VFUnVXdEhBR2xrV0hmWTVya3ZtdVRpbG8veFhkQ2xWaGVxUFhTMG81Ulo5Z3g3L2N1WE1NVUJKbTI3Cmk2ZzVJQm94VkJrZzhsd3UxbHFJNlFjQVd4Ryt0RFlweVE4SVIzOWxpSzUxNnI3c2lPSmRDWnM3T0dudy9EaVMKL2xJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://127.0.0.1:39025
  name: kind-demo
contexts:
- context:
    cluster: kind-demo
    user: kind-demo
  name: kind-demo
current-context: kind-demo
kind: Config
preferences: {}
users:
- name: kind-demo
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJSVd1TEZtRlFEY3N3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBM01UZ3hNak16TkROYUZ3MHlOREEzTVRjeE1qTXpORFZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZtd0phU3FCeGhkWnhPUlYKaSsvckpMdDdxallXN0FXZGptc0NYNmxxM2EvVVNMbHNwYU0rYitISTVUcnJ4RnRSd2gwQXI0cVRTRnZiNnh0cwpuM3VTbnNUMFlDOGkxWWxUTnVzbExxVjJyYVlZQzF5c2ZQMVBsTnl5ZEJlUU90ZHNBWEhuOExtUEJZN2tpaEFjCjdDU0dpTUdxWFppS1U4QXRpVXZ6RzZmV1ZjTjliTDNjQ1BoaEtiWE96ZzBDM3dXMkZTczBWMHVXc0ttMjcvWEEKTlR3NkZneE9scndoTkRiRVVxZFJoUmpmSHNGT01mQVVScjhTRUs2LzhrQ2c2bzhmUlQ1cUtwTkVzNzdnZTE1dApQUkNqWmhJemJRQ3BFVUIxZERvMW5BUndDeWZiQ2pCd0RkU1ViYWk3RkJwd0pleThYcWQwcFBCaThOU2ZTb0RCCktxLytNd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JUMUR4TGZqcU96b1dHSkFKVFJYSXZkUFBYNApXekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBY0dJNXhVZ25XeHRTZ3V0aEVNMUdxdk5JRGI3TlNLaUhTNHplCmFxTkNVb1lVRUtPNzBxYmFLTHdXbUw2REx2U0xzQlpYSWI2SE1OeXlZNEVSS2F0eWl1ZlpkUEJYSlg2WEptdUcKSDRLczBjQmxHRUhhbThpZlFsRDlvYXRhOVBxdlFSMkc1Njc5SnJYK3EyQnMxTElqWSszNUxQUGJWSzBJZlBOdQpMaDdaUTJhZVdXRTlXVW0rNkkvT0Z0R0xKbzd3L3I4bEhKemxITktRMGJpNzgwUnZRNDB5YzlRVnBnRWY2NEcrCjRJclJMVnFyOVp1SlRMVXpZREFhWG5ZVW5UUEx0MnAwZElDMzYrYlpGSlc4Q0syS3ZKeC8rcnpNamIzTWVLdXMKdzBRemQyVmxTZHord0hNUmZsclVCV2lIcFJTU2p4aTRrL25tSiswdER5YnN5akNSYVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdm13SmFTcUJ4aGRaeE9SVmkrL3JKTHQ3cWpZVzdBV2RqbXNDWDZscTNhL1VTTGxzCnBhTStiK0hJNVRycnhGdFJ3aDBBcjRxVFNGdmI2eHRzbjN1U25zVDBZQzhpMVlsVE51c2xMcVYycmFZWUMxeXMKZlAxUGxOeXlkQmVRT3Rkc0FYSG44TG1QQlk3a2loQWM3Q1NHaU1HcVhaaUtVOEF0aVV2ekc2ZldWY045YkwzYwpDUGhoS2JYT3pnMEMzd1cyRlNzMFYwdVdzS20yNy9YQU5UdzZGZ3hPbHJ3aE5EYkVVcWRSaFJqZkhzRk9NZkFVClJyOFNFSzYvOGtDZzZvOGZSVDVxS3BORXM3N2dlMTV0UFJDalpoSXpiUUNwRVVCMWREbzFuQVJ3Q3lmYkNqQncKRGRTVWJhaTdGQnB3SmV5OFhxZDBwUEJpOE5TZlNvREJLcS8rTXdJREFRQUJBb0lCQUdJSXBOK3JycHdaTVhJWQpTNko3cGdlSExpZDNLVjNobGpmWUI2VFFSK0JSd1d5ZmFidnN5eHcybFlMT1Rzc01hSThTOTJOb2FHTDhSOEJHCm9pbUpLUGJzVnhPZHNNVldxYXpBYXFnVkw0QSszbW9iRUFKWk56dGdVODlJd2t4STA2WDZ5bm80VGRXQ3QwNE0KOVpidFJ3WHBEcGlaQzc0S1ZtYzAzcmdDTkdwNkV0aG1mbWtGcmd1UlBDSS9tT3d3MXlHcWZ2WWlJRytEbERKTgpWYzNYQzByR3FISGpiZWdYUG9CUENFTE80amwrYzl2cUl0RjgzUHoxb3RtYUhydzhINnR6Q0tGeHoyTDBKbGsrCjF2cnNMWnRLeXRMeUcvbVdHOE03ak0yVnRBR2FNT0EycFhQT0dZQWNrSmlFZlYrM3BJN1lOYm9LNEszSVluVmwKVG40SWFTRUNnWUVBMGJIZVg3Ujg0T0szVjNlUXZ4a0NEcm1zNG5zckF5azdEV3JDdDNlblBUQjdVbkNKQ01KNgpaNU1JR3hzNHROVHZYWEh0cFBvZ3BPOHFZWlY1SHBUNkZrc3RiMytCaXFlRXpHMlRmMFdUOXlYUzFKZU9BeFhDCnVaWjhNRnJ6UWpCeG5Wa3RoM0dzM3AwaHBNdzJZaE9LbGt3T21HdVJFTlpnOGI2eUlvRHBabmNDZ1lFQTZIaXIKaVRPME8xZjNDR0lVdjRMT2ZIUkczYlRvT2tuU2ZCS09pYXdub1JNeWtxWSsvbiszNFplN0VieTA0TzRnM3F5SwpTaTgyWGwzNzhxLzE2VXNIZEV2MXNiUXZuV3dUS1B3UE52bU9vc2t1dVFVZXhSZmFNd0pScEMvbWhwSm04dHh5CkNXWkI1R0oyd09ZWWcrc1NvVjFmZnJNUitBejM4TEpTbkpMMkNTVUNnWUJ2WnVCdDFkUTJJUndvRXJSS1liM1AKRnVON0d0WTZBckNGcXo4dyt4ZFZFYW1pblhpZnQ3b1J4bklhL0hZKzA1VXEvcml5MmROMzdEdUd4a01uZFJ2Nwp0Z3E0WG5QeXRwWjlpSVZBcXpVMXF0bDc2ZHdmVlhNeTUzaW9zOWppUkJ4SDdMV2NiRTdib1h6Yk1VWi9Da1NwCkhsVHVzczdKdENxaW81MjlhT0VXZHdLQmdEYWtCazJkWllOOVRZY2U1cG1NK1ZPdlVPalRtTEg2b0FxaG9mY2kKQzc2RWNLS2ZpTGJ3OWh1RU9tZ1Uzcjd2dWJJZEEvUWozTGVaaDVxbldUbVlkUXdVdm84aU52N2RaRE9CNjJHVQpqcjRjWTJzQmxSWG1ZVmNUK0hTSy9iZ3J1UjdrU2JtRDI0RCswOExMVW4vUFJQWEFxSzF6RVlvb0lpN2sreDNxClBRSXhBb0dBZUdiUlJjSlRwUXAzRmlMQ1E0VFpmeHAzUmUwalNXZTBScTFlUUpoekNySm1qRVZkbnArUzdYZUoKbnpaYVBOdGphWnFWbFVPN1k3a2RYay9jRThJTWFla2huR2h5cjFkL1J3L21GdDdySnBoekdYMlFPdTBCNzZNQQpEWUhRQTNrSVJoRmRDajF3MVkzalBPYVFqc2pUZ25CbUZLWDZYSENZYllkbDFKaXA2MkE9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

我们再创建一个 prod 集群:

kind create cluster --name prod --wait 5m

再看 kubeconfig文件,可以看到两个context,两个cluster,两个user

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EY3hPREV5TXpNME0xb1hEVE16TURjeE5URXlNek0wTTFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTUFECjdUWUhBUUkyQUtDQlNOMzZaTm1YSVFnZFNrR0sxNTIySzhvclJHZlBmTVBueWJsbWNheTJzKzQxZ05nVUZPQm0KUGRNODIwbUNvdEY2U09nWHNULzI4cWdWL2pBRVB3bWhkMDJHa2k2VXZXWVNDb2hxRE10cHpDRks5U3VSZkdOSApsOG5JczlSR2RsYzVteXkyVXJwM3hYcEIyVThqYkxDcUdmOFJoSmVpK0ZmSzQxNUtqRkY0bGpyZmxvK1hwbk5OCnFCYXAxbUFpNmp1SzYzeDhpbDFFTWtvV3pCdmhQOWwvY2Y1bkRZNnAxcHh2cm5nUzR0UTFraitRRnhNMlovK3EKd05WbTZNUytMd044c1BhNE9sOGF3L3RmbGg5OVJscExzemNTTjlpRlRUNk5zdXYxdTJVc3ZHQkJLZVFRVUliVwpYaWZlU0plV1lVd01oTGp3a2ZjQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZQVVBFdCtPbzdPaFlZa0FsTkZjaTkwODlmaGJNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBQWp6WWNJaWZqZzZxenloekdkZgpobmQwaVY2ZlEwcHI1SGNPVFdVL2lXRUtKbmJYdncvK1FVMjRIYmJaYU5GL01JaktRMDdReTdEZVBERGdRTGdvCkw5SFQ2ODFPeFJpU1dEWkMrUzBFRmRmMk82cEhtbnFOVDluQTN6VnRzOGFvZnljZ0JTamg0WFg2Z3ZMUFVVZDMKNDMxVG9hZUU0eDNtbWNDcGNUdTNZNk1sQm1ZcCtCVkdHZk0xTDJIenE3L0VNZWRCVU13Z2ZKVEhPL2w3d3ZwWApNWXF2c0VFUnVXdEhBR2xrV0hmWTVya3ZtdVRpbG8veFhkQ2xWaGVxUFhTMG81Ulo5Z3g3L2N1WE1NVUJKbTI3Cmk2ZzVJQm94VkJrZzhsd3UxbHFJNlFjQVd4Ryt0RFlweVE4SVIzOWxpSzUxNnI3c2lPSmRDWnM3T0dudy9EaVMKL2xJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://127.0.0.1:39025
  name: kind-demo
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1EY3hPREV5TlRNd09Wb1hEVE16TURjeE5URXlOVE13T1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT1FiCm1mY1htUGlORnlyWVFqZmd4WSs0Y2dqeFhVdUc2Nlp3SGpMS1I4VzlSbzJvTVdOZ0tqS3J5VkFXNTl4eVd3MnEKVEkzYVhZNmFUZkQweWZsQU9sRjFjTDZpdzU1YmVMSUdoZFlJcG1lWVozdjRPQ1g4OHlHRzZqNlZ6L1dnOGd4dQpCN01IV2YzQ0RvTk8yTHF4VzhaQVh0Ny9HTWNxMmZqSjRmZFlwU2E4emQ5UjlucVkrbkNCcVNkTDE4UXFlRXVNCkdWa3VpZHREMUFqSng3di8zVGhNNHhwUldlYWZYNXZrZ3lwdm82dTlSdC9YeUwvVUI3NWg5bjlvRkNJRFlJMHgKUk1uaDFUQTgvK0pDeE1VZWQwbzdnbE0rVXlNRElNbUNvZjVpSUNRcTFQN1cxNmQwalB0NWU1dmM5UHlqVUIyUQpIUFkybTdBNFhIbGtoWXZnM3c4Q0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZBOWlxWFRyYk43U1BQak84eGZtUmpiK3RPUm5NQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSi9FdFpvZWE1TDVyTkEwemI0dAprSERZNjFPb2d3bTJUWXBpczJuTDNzcGttSnFTK3B1WnRqaUQwczhjUGZQSGdtKzhrblpyUzcwelErOGZwdXA3CmVyV3VxSmNvOVpDTXZxRHBTR3ljUWFOdDlkeERkdWVqU0JLZkNiaXRaSnRwa01QTGtXNHRmV1VSOTdTVmFJeFkKY0t3dGltWlBKVVZ6NUJMUTBJY0hzMWFBS0puN3lKaXloVWlpR1lRQ0h2d0hzUHBDMW94SEFMY3ZPeGZscGRlOAo4MzJ2dlpKNVRGbGdSVXRWUFRoSG45bmthWmhpYXBEOGljcURnUElCU2lZMTBkamd4eW1SbGlJS1JzckY0dHRjCmwwNWlISzIzQzZYQjlkU0tkUGhHeU1LaFROMDB1OEVWMktjREUybUFHRk1KUHZsTDFQVlo3WlJMMmdQV2NrV3AKNmFnPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    server: https://127.0.0.1:46229
  name: kind-prod
contexts:
- context:
    cluster: kind-demo
    user: kind-demo
  name: kind-demo
- context:
    cluster: kind-prod
    user: kind-prod
  name: kind-prod
current-context: kind-prod
kind: Config
preferences: {}
users:
- name: kind-demo
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJSVd1TEZtRlFEY3N3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBM01UZ3hNak16TkROYUZ3MHlOREEzTVRjeE1qTXpORFZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXZtd0phU3FCeGhkWnhPUlYKaSsvckpMdDdxallXN0FXZGptc0NYNmxxM2EvVVNMbHNwYU0rYitISTVUcnJ4RnRSd2gwQXI0cVRTRnZiNnh0cwpuM3VTbnNUMFlDOGkxWWxUTnVzbExxVjJyYVlZQzF5c2ZQMVBsTnl5ZEJlUU90ZHNBWEhuOExtUEJZN2tpaEFjCjdDU0dpTUdxWFppS1U4QXRpVXZ6RzZmV1ZjTjliTDNjQ1BoaEtiWE96ZzBDM3dXMkZTczBWMHVXc0ttMjcvWEEKTlR3NkZneE9scndoTkRiRVVxZFJoUmpmSHNGT01mQVVScjhTRUs2LzhrQ2c2bzhmUlQ1cUtwTkVzNzdnZTE1dApQUkNqWmhJemJRQ3BFVUIxZERvMW5BUndDeWZiQ2pCd0RkU1ViYWk3RkJwd0pleThYcWQwcFBCaThOU2ZTb0RCCktxLytNd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JUMUR4TGZqcU96b1dHSkFKVFJYSXZkUFBYNApXekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBY0dJNXhVZ25XeHRTZ3V0aEVNMUdxdk5JRGI3TlNLaUhTNHplCmFxTkNVb1lVRUtPNzBxYmFLTHdXbUw2REx2U0xzQlpYSWI2SE1OeXlZNEVSS2F0eWl1ZlpkUEJYSlg2WEptdUcKSDRLczBjQmxHRUhhbThpZlFsRDlvYXRhOVBxdlFSMkc1Njc5SnJYK3EyQnMxTElqWSszNUxQUGJWSzBJZlBOdQpMaDdaUTJhZVdXRTlXVW0rNkkvT0Z0R0xKbzd3L3I4bEhKemxITktRMGJpNzgwUnZRNDB5YzlRVnBnRWY2NEcrCjRJclJMVnFyOVp1SlRMVXpZREFhWG5ZVW5UUEx0MnAwZElDMzYrYlpGSlc4Q0syS3ZKeC8rcnpNamIzTWVLdXMKdzBRemQyVmxTZHord0hNUmZsclVCV2lIcFJTU2p4aTRrL25tSiswdER5YnN5akNSYVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdm13SmFTcUJ4aGRaeE9SVmkrL3JKTHQ3cWpZVzdBV2RqbXNDWDZscTNhL1VTTGxzCnBhTStiK0hJNVRycnhGdFJ3aDBBcjRxVFNGdmI2eHRzbjN1U25zVDBZQzhpMVlsVE51c2xMcVYycmFZWUMxeXMKZlAxUGxOeXlkQmVRT3Rkc0FYSG44TG1QQlk3a2loQWM3Q1NHaU1HcVhaaUtVOEF0aVV2ekc2ZldWY045YkwzYwpDUGhoS2JYT3pnMEMzd1cyRlNzMFYwdVdzS20yNy9YQU5UdzZGZ3hPbHJ3aE5EYkVVcWRSaFJqZkhzRk9NZkFVClJyOFNFSzYvOGtDZzZvOGZSVDVxS3BORXM3N2dlMTV0UFJDalpoSXpiUUNwRVVCMWREbzFuQVJ3Q3lmYkNqQncKRGRTVWJhaTdGQnB3SmV5OFhxZDBwUEJpOE5TZlNvREJLcS8rTXdJREFRQUJBb0lCQUdJSXBOK3JycHdaTVhJWQpTNko3cGdlSExpZDNLVjNobGpmWUI2VFFSK0JSd1d5ZmFidnN5eHcybFlMT1Rzc01hSThTOTJOb2FHTDhSOEJHCm9pbUpLUGJzVnhPZHNNVldxYXpBYXFnVkw0QSszbW9iRUFKWk56dGdVODlJd2t4STA2WDZ5bm80VGRXQ3QwNE0KOVpidFJ3WHBEcGlaQzc0S1ZtYzAzcmdDTkdwNkV0aG1mbWtGcmd1UlBDSS9tT3d3MXlHcWZ2WWlJRytEbERKTgpWYzNYQzByR3FISGpiZWdYUG9CUENFTE80amwrYzl2cUl0RjgzUHoxb3RtYUhydzhINnR6Q0tGeHoyTDBKbGsrCjF2cnNMWnRLeXRMeUcvbVdHOE03ak0yVnRBR2FNT0EycFhQT0dZQWNrSmlFZlYrM3BJN1lOYm9LNEszSVluVmwKVG40SWFTRUNnWUVBMGJIZVg3Ujg0T0szVjNlUXZ4a0NEcm1zNG5zckF5azdEV3JDdDNlblBUQjdVbkNKQ01KNgpaNU1JR3hzNHROVHZYWEh0cFBvZ3BPOHFZWlY1SHBUNkZrc3RiMytCaXFlRXpHMlRmMFdUOXlYUzFKZU9BeFhDCnVaWjhNRnJ6UWpCeG5Wa3RoM0dzM3AwaHBNdzJZaE9LbGt3T21HdVJFTlpnOGI2eUlvRHBabmNDZ1lFQTZIaXIKaVRPME8xZjNDR0lVdjRMT2ZIUkczYlRvT2tuU2ZCS09pYXdub1JNeWtxWSsvbiszNFplN0VieTA0TzRnM3F5SwpTaTgyWGwzNzhxLzE2VXNIZEV2MXNiUXZuV3dUS1B3UE52bU9vc2t1dVFVZXhSZmFNd0pScEMvbWhwSm04dHh5CkNXWkI1R0oyd09ZWWcrc1NvVjFmZnJNUitBejM4TEpTbkpMMkNTVUNnWUJ2WnVCdDFkUTJJUndvRXJSS1liM1AKRnVON0d0WTZBckNGcXo4dyt4ZFZFYW1pblhpZnQ3b1J4bklhL0hZKzA1VXEvcml5MmROMzdEdUd4a01uZFJ2Nwp0Z3E0WG5QeXRwWjlpSVZBcXpVMXF0bDc2ZHdmVlhNeTUzaW9zOWppUkJ4SDdMV2NiRTdib1h6Yk1VWi9Da1NwCkhsVHVzczdKdENxaW81MjlhT0VXZHdLQmdEYWtCazJkWllOOVRZY2U1cG1NK1ZPdlVPalRtTEg2b0FxaG9mY2kKQzc2RWNLS2ZpTGJ3OWh1RU9tZ1Uzcjd2dWJJZEEvUWozTGVaaDVxbldUbVlkUXdVdm84aU52N2RaRE9CNjJHVQpqcjRjWTJzQmxSWG1ZVmNUK0hTSy9iZ3J1UjdrU2JtRDI0RCswOExMVW4vUFJQWEFxSzF6RVlvb0lpN2sreDNxClBRSXhBb0dBZUdiUlJjSlRwUXAzRmlMQ1E0VFpmeHAzUmUwalNXZTBScTFlUUpoekNySm1qRVZkbnArUzdYZUoKbnpaYVBOdGphWnFWbFVPN1k3a2RYay9jRThJTWFla2huR2h5cjFkL1J3L21GdDdySnBoekdYMlFPdTBCNzZNQQpEWUhRQTNrSVJoRmRDajF3MVkzalBPYVFqc2pUZ25CbUZLWDZYSENZYllkbDFKaXA2MkE9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
- name: kind-prod
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJRUJPRkI3NFozdkV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBM01UZ3hNalV6TURsYUZ3MHlOREEzTVRjeE1qVXpNVEZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTd3VThuN3lHVzc2MGsydHMKbWxwemZlM2MzOHM5SUNKRDNMUjM4Z0FDaDdUYU8vTjVVRU1tS01iRFk2S0hOZjFFakFJdW9vNG9EakpFRlJIQgpvVlNtWGVERTZ2MDlLd1FYTk9pbm9VRDcxRm96OSs1ZVhlcmVRUkJkUGRpaWZab2FZTzV0N2ZTdTVqYWpTMUkzCk8rd1FyN0o3d3dPc3JhcEZJRmYvTFl2ODljcm0xVTE2QWQ3VFNwRWh6VjFPWFQyRE1sbzhwcXowNVpzUTV3VU8KUWNSZWNHQ0hCQ25tOVJlVXNxNnR2bnJGc0gvNnIrcXNTNVQxYmJXc3lEZ0wyenBtNmVoeHcvM2xibDVwUUxnSgo1RHh0SFF3SHdpM2p4RU1PMlFpdDdxZjFsUml5dmhENVNEalV0OTd5dSsvbFMwWlI2STJkYWgyMFZta3dCeVk5CkdUaVBqd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JRUFlxbDA2MnplMGp6NHp2TVg1a1kyL3JUawpaekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBczNKbHlnQlgzNWhCZ3VTTndLMHowUUNYcTRydDRxZ1ZXam5zCk9zWTAzRUpmMVhiMnVvS0xnSW9yVy9KVzZqYWNHdXo2ZWl6TzRjSXFMcTV1dWhROEhybnhqVGVmNDgzSGdmdjYKbmQ1SXZDNHFWZUt6WDd0eVlOLzVlM1Z0ZmhkK0JUUTVMWTBNNGpkMVhXL3dWQi9IdU8rUmhNN1hhNUo0alJGagphSHp2QkdFR0M1UDltbzdmM3VUTlNBdnAwbGRzMS9HTHRCWjYva3NjbllGQ0hudWpDdUdUNmdBdWh3Nkt1VURQCncwMzExbHFlVjZxRzBSWHF6KzIxcjNTUzBCWE82UHBqN0VvQzhnbWltS0p2OEU4Q01rajU1bXByMCtBa2NZRUYKMExnSW1IbTEyRHorVmlZbUlWT1RidWRzNkYxTEt3d01yUmQ2WFdlQlFUQ1VIb04vSlE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBN3dVOG43eUdXNzYwazJ0c21scHpmZTNjMzhzOUlDSkQzTFIzOGdBQ2g3VGFPL041ClVFTW1LTWJEWTZLSE5mMUVqQUl1b280b0RqSkVGUkhCb1ZTbVhlREU2djA5S3dRWE5PaW5vVUQ3MUZvejkrNWUKWGVyZVFSQmRQZGlpZlpvYVlPNXQ3ZlN1NWphalMxSTNPK3dRcjdKN3d3T3NyYXBGSUZmL0xZdjg5Y3JtMVUxNgpBZDdUU3BFaHpWMU9YVDJETWxvOHBxejA1WnNRNXdVT1FjUmVjR0NIQkNubTlSZVVzcTZ0dm5yRnNILzZyK3FzClM1VDFiYldzeURnTDJ6cG02ZWh4dy8zbGJsNXBRTGdKNUR4dEhRd0h3aTNqeEVNTzJRaXQ3cWYxbFJpeXZoRDUKU0RqVXQ5N3l1Ky9sUzBaUjZJMmRhaDIwVm1rd0J5WTlHVGlQandJREFRQUJBb0lCQVFES2V1YzJjbUJuakJBdwo2a25nSUV2Q0hDU0dPUWVaRnkzaDQ4ZlFiQTI0cEk1VFJ4ZzMxQXFaZEhmRkNjUDlDb1p0RE5Rd3hMaE4vbXNLClpqWmYwdlAwaHhxSjd1bEliWGl6UzN2bDhNVGt5VjFJNU5kd1BDejNkVU5ueHdNdjM4SUU1emFjNUREZHVOOXcKU1QrZE5ZZVZMMkFFZmpKa0U5L25YR1JCVTF1Qll6UWk3RHVSUXlJNWRzdnBvNjgrNlhqY2p6alZRSy9RTklvagpsbGVuVEpJL243a1ZnZ1FXMDZkdkJaeURlWVhlKzJkNm9KZG9tTEwrTlRSVndmdng3dVpVSWNxYXpzSWpRN0E5CmtVWWVyWVhkcTZpejZZWUZHQkVkY0J6L0pPQlV3N2VWMnBhNjdXd3lXdWxGWVFJZVY2TktjYW1oZTRXUGlYOUgKdEgwY2pQRXhBb0dCQVB5WXNNR0tqWGc2ek1JeXJkU2ZXWVplT0JneENXU0p2SGdNTUxjMHZ4ei8zSjA3NG0zTgo4dXoxMFBtbG5JNkxFTE9VUWRXUG9lV2ZFL2dTbFVGL1dLdmhSKzRnVGozbTIxd2lGODNHNEF4cFVpbW80OUdwClI4enhUT3hDbThyVVNwSytXS1pVd1V6c2lobkM4czQwUEJlTFU5d2lCaFdyR01pdXF0c00xcHRWQW9HQkFQSTkKdDVlR3p0T2FSOFAzd2hLZHNVUXdyWmc1V3ZyaGVzaUR4UE9lVG50MHAvekJpcmxBdFZuVFFMY3VmQnBqazlMSApWTUp3bGJtMFJnc3AzTHd4cGpXSEl4YWptTXdmZ1IzcXNFTzJ5dldFQitVcVBSOStSSVNWa1I3QmFDU01XVkNIClBXMEQ2eTVwMURDY005T1R0Mm44eG12ZzRZUnlER0J4SFprc2tXZFRBb0dCQU1DdG5FN1Y2Rm5veUYzdUdJa1MKMEZCZHVINURrWDJlVHlSbmNCV2Y1NVF3VzlHWVozMEkxeUFIMWxOSUQrYnZqMXJjWVdlTk81cVRRTUUvTTVrVgprY2J5ZmxMWFU3ZUdUSmUzN2Q1cXNHYm5RK1JCVHg2VCtSQU1sSGUzeTJ6cGlNVHM2MlJkVEdIb0lPUEx3RGlvCndabllEcXpoU3pEbUpXNlhSZjczaVJCTkFvR0JBS3dpWXhXUHUrVHRtdFdNZHlJWFlHSGVYVnp3Vk5BMTdiUVMKdnArRy9Lb0pxVjJZZ21WRnNCaVdYMFJNQ2ZBT2xucVBIcEhVd3ZCbFEraW01SzN1Y2ZkVGdnR1NXditoMjNSUQowdFFyVG1uTVduZmozZTlGSUpjK1dSTUx5RjlBUkM5UENyMHVyYTRia2FiQk9LcStLdlZybyt3QXJ3QVlzdWJOCk9vVWdBR3IxQW9HQUM3cEY0MTZxenFtRHhRL0dqNXpvanpWMzFDRzdDRTRHYlh1SWlHNkVYMyt5NTd0VEhzcDgKWFhZOTA1R0xveEZHanR6eHRxcnE1WjNVcWdPSFQvdk1sRGdMZjBsbmk0MG95VE50MXRnYWRvMUk2TXlJVVovSwo5c2VoOUsraDdNcGVENEF4NGcrUm5TWmRpNlI0eHFOY1BTSllOaXU3UXZJNTdlNG1lY3lzWmw4PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

可以使用 --context指定集群和user

kubectl cluster-info --context kind-prod

删除集群

kind delete cluster --name prod
kubectl config use-context kind-demo # 将current-context设置为之前的demo集群

将docker镜像加载到cluster中

podman build -t rust_http_proxy .
podman tag rust_http_proxy:latest rust_http_proxy:1.0 # k8s的Kubernetes imagePullPolicy 不允许使用latest的镜像。所以给个版本标记
yum install -y docker # 安装podman的docker兼容层,用于下面的docker-image命令
kind load docker-image rust_http_proxy:1.0 --name demo
podman exec -it demo-control-plane crictl images # 查看集群中的镜像列表

集群中的镜像列表如下:

IMAGE                                      TAG                  IMAGE ID            SIZE
docker.io/arloor/rust_http_proxy           1.0                  540e623206d7e       22.2MB
docker.io/kindest/kindnetd                 v20230511-dc714da8   b0b1fa0f58c6e       27.7MB
docker.io/kindest/local-path-helper        v20230510-486859a6   be300acfc8622       3.05MB
docker.io/kindest/local-path-provisioner   v20230511-dc714da8   ce18e076e9d4b       19.4MB
localhost/rust_http_proxy                  1.0                  65631e7a5e1da       22.2MB
registry.k8s.io/coredns/coredns            v1.10.1              ead0a4a53df89       16.2MB
registry.k8s.io/etcd                       3.5.7-0              86b6af7dd652c       102MB
registry.k8s.io/kube-apiserver             v1.27.3              c604ff157f0cf       83.5MB
registry.k8s.io/kube-controller-manager    v1.27.3              9f8f3a9f3e8a9       74.4MB
registry.k8s.io/kube-proxy                 v1.27.3              9d5429f6d7697       72.7MB
registry.k8s.io/kube-scheduler             v1.27.3              205a4d549b94d       59.8MB
registry.k8s.io/pause                      3.7                  221177c6082a8       311kB

进入控制面看看

echo "podman exec -it demo-control-plane /bin/bash" > /usr/local/bin/pssh
chmod +x /usr/local/bin/pssh
pssh

设置下容器内的apt镜像 debian11

## 阿里云镜像
cat > /etc/apt/sources.list <<EOF
deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
EOF
## 腾讯云内网镜像
cat > /etc/apt/sources.list << EOF
deb http://mirrors.tencentyun.com/debian/ bullseye main contrib non-free
deb-src http://mirrors.tencentyun.com/debian/ bullseye main contrib non-free
deb http://mirrors.tencentyun.com/debian/ bullseye-updates main contrib non-free
deb-src http://mirrors.tencentyun.com/debian/ bullseye-updates main contrib non-free
deb http://mirrors.tencentyun.com/debian/ bullseye-backports main contrib non-free
deb-src http://mirrors.tencentyun.com/debian/ bullseye-backports main contrib non-free
deb http://mirrors.tencentyun.com/debian-security/ bullseye-security main contrib non-free
deb-src http://mirrors.tencentyun.com/debian-security/ bullseye-security main contrib non-free
EOF
# 这些Http代理环境变量是从主机传递过来的,如果不想要的话
# 可以删除当前集群,然后清空http代理,重新闯将
cat >> ~/.bashrc <<EOF 
export https_proxy=
export http_proxy=
export HTTP_PROXY=
export HTTPS_PROXY=
EOF
apt update
apt install -y vim

创建工作负载

assign-pods-nodes

# 给控制面node增加label app=all
kubectl label nodes demo-control-plane app=all

# 加载镜像,并将镜像导入到集群
podman pulll docker.io/arloor/rust_http_proxy
podman tag docker.io/arloor/rust_http_proxy:latest rust_http_proxy:1.0
kind load docker-image rust_http_proxy:1.0 --name demo

## 独立启动pod
kubectl run proxy --image=localhost/rust_http_proxy:1.0
kubectl get pods --show-labels
kubectl delete pod proxy

## 通过deployment启动pod
cat > a.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: proxy-deployment
spec:
  replicas: 1 # tells deployment to run 2 pods matching the template
  selector:
    matchLabels:
      app: all
  template:
    metadata:
      labels:
        app: all
    spec:
      containers:
      - name: proxy
        image: localhost/rust_http_proxy:1.0
        ports:
        - containerPort: 3128
EOF
kubectl apply -f a.yaml # 新建一个deployment
kubectl get deployments --show-labels