k8s in docker KinD debian 安装docker docker compose


请去docker官网查看安装说明,该博客只是留作个人笔记用途

debian 安装docker apt安装

sudo apt-get -y update
 sudo apt-get -y install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


sudo apt-get -y update
 sudo apt-get -y install docker-ce docker-ce-cli containerd.io


#安装特定版本
#apt-cache madison docker-ce
#sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

或者用脚本安装

curl -fsSL https://get.docker.com -o get-docker.sh
# Dry run可以显示具体要做的事情,然后自己复制粘贴
#DRY_RUN=1 sh ./get-docker.sh
sh ./get-docker.sh

卸载 docker

apt-get -y autoremove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

安装docker compose 使用仓库

sudo apt-get update
 sudo apt-get install docker-compose-plugin

安装kind (kubernetes in docker) 安装k8s 伪集群

请参考: https://www.qikqiak.com/post/deploy-k8s-on-win-use-wsl2/

# 下载 KinD 二进制文件
#版本0.17.0,最新版请参考 https://kind.sigs.k8s.io/docs/user/quick-start/
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
# 标记为可执行文件
chmod +x ./kind
# 移动到 PATH 目录下去
mv ./kind /usr/local/bin/
# 安装kubectl,不同版本,请参考 https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/install-kubectl.html
curl -o kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.2/2021-07-05/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client

# 检查是否设置了 KUBECONFIG 环境变量
echo $KUBECONFIG
# 检查是否存在 .kube 目录,不需要手动创建
ls $HOME/.kube
# 使用 kind 命令创建一个名为 kindk8s 的集群
kind create cluster --name kindk8s
# 创建后检查 .kube 目录
ls $HOME/.kube




# 创建一个3节点集群的配置文件 **注意以下配置只是看看而已,请参考下方带ingress 转发(映射到宿主机的80,443)的配置**
cat << EOF > kind-3nodes.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
#注意,该配置只是看看和参考,不带端口映射和ingress
nodes:
  - role: control-plane
  - role: worker
  - role: worker
EOF
# 使用配置文件创建新的集群
kind create cluster --name wslkindmultinodes --config ./kind-3nodes.yaml

# 获取集群节点
kubectl get nodes

# 删除现在的集群
kind delete cluster --name wslkindmultinodes

kind安装k8s( 带ingress 转发(映射到宿主机的80,443))

#第一步,建立集群
#注意该配置拿来生产都没问题,😄
if [ -e k8s-mount ];then rm -rf ~/k8s-mount;fi
mkdir ~/k8s-mount
cd ~
path=$(pwd)
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
  podSubnet: "192.168.0.0/16"
  serviceSubnet: "10.100.0.0/12"
nodes:
- role: control-plane
- role: worker
- role: worker
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
  - containerPort: 31599
    hostPort: 31599
    protocol: TCP
  - containerPort: 31699
    hostPort: 31699
    protocol: TCP
  extraMounts:
  - hostPath: $path/k8s-mount/
    containerPath: /k8s-mount
EOF

#安装结束后,可以运行如下命令查看
kubectl cluster-info --context kind-kind

#第二步 添加 ingress-nginx 控制器
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml

#第三步,添加服务和ingress,验证ingress是否工作正常
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
#打开 http://宿主机IP/foo
#打开 http://宿主机IP/bar

安装 metrics-server

官方github地址 https://github.com/kubernetes-sigs/metrics-server

#构建命令 
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl apply -f components.yaml

安装 Kubernetes Dashboard

官方github地址 https://github.com/kubernetes/dashboard

#安装
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
kubectl apply -f recommended.yaml
#访问 (默认情况,kubectl 是配置在本地的)
kubectl proxy #在个人电脑中运行
#访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
#如果kubectl proxy是在服务器上运行的,那需要Nginx做个反向代理出去,也是不太安全
#http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
# 创建一个新的 ServiceAccount
kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
EOF
# 将上面的 SA 绑定到系统的 cluster-admin 这个集群角色上
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
EOF
#接下来我们可以通过上面创建的 ServiceAccount 来获取 Token 信息:
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
# 拷贝上面命令获取到的 Token 数据 

#获取到的 token 数据拷贝到 Dashboard 登录页面进行登录即可

本人水平有限,还在不断学习中 难免有很多错误或者遗漏,望见谅