mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-24 10:45:23 +00:00
Fix and update
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
## 部署 Kubernetes
|
||||
# 部署 Kubernetes
|
||||
|
||||
目前,Kubernetes 支持在多种环境下使用,包括本地主机(Ubuntu、Debian、CentOS、Fedora 等)、云服务([腾讯云](https://cloud.tencent.com/act/cps/redirect?redirect=10058&cps_key=3a5255852d5db99dcd5da4c72f05df61)、[阿里云](https://www.aliyun.com/product/kubernetes?source=5176.11533457&userCode=8lx5zmtu&type=copy)、[百度云](https://cloud.baidu.com/product/cce.html) 等)。
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
|
||||
### 测试
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ kubectl version
|
||||
```
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
|
||||
### 安装
|
||||
|
||||
K3s 的安装非常简单,官方提供了便捷的安装脚本。
|
||||
|
||||
#### 脚本安装(Linux)
|
||||
|
||||
K3s 提供了极为便捷的安装脚本:
|
||||
@@ -23,6 +25,8 @@ curl -sfL https://get.k3s.io | sh -
|
||||
|
||||
#### 查看状态
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
sudo k3s kubectl get nodes
|
||||
```
|
||||
@@ -39,14 +43,18 @@ K3s 内置了 `kubectl` 命令(通过 `k3s kubectl` 调用),为了方便
|
||||
|
||||
```bash
|
||||
## 读取 K3s 的配置文件
|
||||
|
||||
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
|
||||
|
||||
## 现在可以直接使用 kubectl
|
||||
|
||||
kubectl get pods -A
|
||||
```
|
||||
|
||||
### 清理卸载
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
/usr/local/bin/k3s-uninstall.sh
|
||||
```
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
### 为什么选择 Kind
|
||||
|
||||
Kind 相比其他本地集群方案(如 Minikube)有以下显著优势:
|
||||
|
||||
* **轻量便捷**:只要有 Docker 环境即可,无需额外虚拟机。
|
||||
* **多集群支持**:可以轻松在本地启动多个集群。
|
||||
* **多版本支持**:支持指定 Kubernetes 版本进行测试。
|
||||
@@ -11,18 +13,23 @@
|
||||
|
||||
### 安装 Kind
|
||||
|
||||
Kind 是一个二进制文件,并在 PATH 中即可使用。以下是不同系统的安装方法。
|
||||
|
||||
#### macOS
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
brew install kind
|
||||
```
|
||||
|
||||
#### Linux / Windows (WSL2)
|
||||
#### Linux / Windows(WSL2)
|
||||
|
||||
可以下载二进制文件:
|
||||
|
||||
```bash
|
||||
## Linux AMD64
|
||||
|
||||
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
|
||||
chmod +x ./kind
|
||||
sudo mv ./kind /usr/local/bin/kind
|
||||
@@ -76,6 +83,8 @@ kind create cluster --config kind-config.yaml
|
||||
|
||||
### 删除集群
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
kind delete cluster
|
||||
```
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## 使用 kubeadm 部署 kubernetes(使用 Docker)
|
||||
## 使用 kubeadm 部署 kubernetes(使用 Docker)
|
||||
|
||||
`kubeadm` 提供了 `kubeadm init` 以及 `kubeadm join` 这两个命令作为快速创建 `kubernetes` 集群的最佳实践。
|
||||
|
||||
@@ -8,8 +8,12 @@
|
||||
|
||||
### 安装 **kubelet** **kubeadm** **kubectl**
|
||||
|
||||
需要在每台机器上安装以下的软件包:
|
||||
|
||||
#### Ubuntu/Debian
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ apt-get update && apt-get install -y apt-transport-https
|
||||
$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
|
||||
@@ -24,6 +28,8 @@ $ apt-get install -y kubelet kubeadm kubectl
|
||||
|
||||
#### CentOS/Fedora
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
|
||||
[kubernetes]
|
||||
@@ -40,6 +46,8 @@ $ sudo yum install -y kubelet kubeadm kubectl
|
||||
|
||||
### 修改内核的运行参数
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
|
||||
net.bridge.bridge-nf-call-iptables = 1
|
||||
@@ -48,17 +56,21 @@ net.bridge.bridge-nf-call-ip6tables = 1
|
||||
EOF
|
||||
|
||||
## 应用配置
|
||||
|
||||
$ sysctl --system
|
||||
```
|
||||
|
||||
### 配置 kubelet
|
||||
|
||||
为了让 kubelet 正确运行,我们需要对其进行一些必要的配置。
|
||||
|
||||
#### 修改 `kubelet.service`
|
||||
|
||||
`/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf` 写入以下内容
|
||||
|
||||
```bash
|
||||
## 启用 ipvs 相关内核模块
|
||||
|
||||
[Service]
|
||||
ExecStartPre=-/sbin/modprobe ip_vs
|
||||
ExecStartPre=-/sbin/modprobe ip_vs_rr
|
||||
@@ -74,8 +86,12 @@ $ sudo systemctl daemon-reload
|
||||
|
||||
### 部署
|
||||
|
||||
安装配置完成后,我们将分别在 Master 节点和 Worker 节点上进行部署操作。
|
||||
|
||||
#### master
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ sudo kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
|
||||
--pod-network-cidr 10.244.0.0/16 \
|
||||
@@ -116,7 +132,7 @@ kubeadm join 192.168.199.100:6443 --token cz81zt.orsy9gm9v649e5lf \
|
||||
|
||||
#### node 工作节点
|
||||
|
||||
在 **另一主机** 重复 **部署** 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。
|
||||
在 **另一主机**重复**部署** 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。
|
||||
|
||||
```bash
|
||||
$ kubeadm join 192.168.199.100:6443 --token cz81zt.orsy9gm9v649e5lf \
|
||||
@@ -163,6 +179,7 @@ $ kubeadm join 192.168.199.100:6443 --token cz81zt.orsy9gm9v649e5lf \
|
||||
$ kubectl get node -o yaml | grep CIDR
|
||||
|
||||
## 输出
|
||||
|
||||
podCIDR: 10.244.0.0/16
|
||||
podCIDRs:
|
||||
```
|
||||
@@ -179,7 +196,11 @@ $ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.11.0/Docu
|
||||
$ kubectl taint nodes --all node-role.kubernetes.io/master-
|
||||
|
||||
## 恢复默认值
|
||||
|
||||
## $ kubectl taint nodes NODE_NAME node-role.kubernetes.io/master=true:NoSchedule
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
|
||||
### 参考文档
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
## 使用 kubeadm 部署 kubernetes(CRI 使用 containerd)
|
||||
## 使用 kubeadm 部署 kubernetes(CRI 使用 containerd)
|
||||
|
||||
`kubeadm` 提供了 `kubeadm init` 以及 `kubeadm join` 这两个命令作为快速创建 `kubernetes` 集群的最佳实践。
|
||||
|
||||
@@ -10,9 +10,11 @@
|
||||
|
||||
```bash
|
||||
## debian 系
|
||||
|
||||
$ sudo apt install containerd.io
|
||||
|
||||
## rhel 系
|
||||
|
||||
$ sudo yum install containerd.io
|
||||
```
|
||||
|
||||
@@ -36,12 +38,16 @@ KillMode=process
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
## Having non-zero Limit*s causes performance problems due to accounting overhead
|
||||
|
||||
## in the kernel. We recommend using cgroups to do container-local accounting.
|
||||
|
||||
LimitNPROC=infinity
|
||||
LimitCORE=infinity
|
||||
LimitNOFILE=infinity
|
||||
## Comment TasksMax if your systemd version does not supports it.
|
||||
|
||||
## Only systemd 226 and above support this version.
|
||||
|
||||
TasksMax=infinity
|
||||
OOMScoreAdjust=-999
|
||||
|
||||
@@ -54,13 +60,16 @@ WantedBy=multi-user.target
|
||||
```toml
|
||||
version = 2
|
||||
## persistent data location
|
||||
|
||||
root = "/var/lib/cri-containerd"
|
||||
## runtime state information
|
||||
|
||||
state = "/run/cri-containerd"
|
||||
plugin_dir = ""
|
||||
disabled_plugins = []
|
||||
required_plugins = []
|
||||
## set containerd's OOM score
|
||||
|
||||
oom_score = 0
|
||||
|
||||
[grpc]
|
||||
@@ -203,8 +212,12 @@ oom_score = 0
|
||||
|
||||
### 安装 **kubelet** **kubeadm** **kubectl** **cri-tools** **kubernetes-cni**
|
||||
|
||||
需要在每台机器上安装以下的软件包:
|
||||
|
||||
#### Ubuntu/Debian
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ apt-get update && apt-get install -y apt-transport-https
|
||||
$ curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
|
||||
@@ -219,6 +232,8 @@ $ apt-get install -y kubelet kubeadm kubectl
|
||||
|
||||
#### CentOS/Fedora
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
|
||||
[kubernetes]
|
||||
@@ -235,6 +250,8 @@ $ sudo yum install -y kubelet kubeadm kubectl
|
||||
|
||||
### 修改内核的运行参数
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
|
||||
net.bridge.bridge-nf-call-iptables = 1
|
||||
@@ -243,17 +260,21 @@ net.bridge.bridge-nf-call-ip6tables = 1
|
||||
EOF
|
||||
|
||||
## 应用配置
|
||||
|
||||
$ sysctl --system
|
||||
```
|
||||
|
||||
### 配置 kubelet
|
||||
|
||||
为了让 kubelet 正确运行,我们需要对其进行一些必要的配置。
|
||||
|
||||
#### 修改 `kubelet.service`
|
||||
|
||||
`/etc/systemd/system/kubelet.service.d/10-proxy-ipvs.conf` 写入以下内容
|
||||
|
||||
```bash
|
||||
## 启用 ipvs 相关内核模块
|
||||
|
||||
[Service]
|
||||
ExecStartPre=-/sbin/modprobe ip_vs
|
||||
ExecStartPre=-/sbin/modprobe ip_vs_rr
|
||||
@@ -269,8 +290,12 @@ $ sudo systemctl daemon-reload
|
||||
|
||||
### 部署
|
||||
|
||||
安装配置完成后,我们将分别在 Master 节点和 Worker 节点上进行部署操作。
|
||||
|
||||
#### master
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ systemctl enable cri-containerd
|
||||
|
||||
@@ -317,7 +342,7 @@ kubeadm join 192.168.199.100:6443 --token cz81zt.orsy9gm9v649e5lf \
|
||||
|
||||
#### node 工作节点
|
||||
|
||||
在 **另一主机** 重复 **部署** 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。
|
||||
在 **另一主机**重复**部署** 小节以前的步骤,安装配置好 kubelet。根据提示,加入到集群。
|
||||
|
||||
```bash
|
||||
$ systemctl enable cri-containerd
|
||||
@@ -374,6 +399,7 @@ CONTAINER_RUNTIME_ENDPOINT=/run/cri-containerd/cri-containerd.sock crictl ps -a
|
||||
$ kubectl get node -o yaml | grep CIDR
|
||||
|
||||
## 输出
|
||||
|
||||
podCIDR: 10.244.0.0/16
|
||||
podCIDRs:
|
||||
```
|
||||
@@ -390,7 +416,11 @@ $ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.26.1/
|
||||
$ kubectl taint nodes --all node-role.kubernetes.io/master-
|
||||
|
||||
## 恢复默认值
|
||||
|
||||
## $ kubectl taint nodes NODE_NAME node-role.kubernetes.io/master=true:NoSchedule
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
|
||||
### 参考文档
|
||||
|
||||
Reference in New Issue
Block a user