echo "$ss" |sed -e "s/ssrcid/$i/" -e "s/serverid/$@/" >> aaa.conf sed:-e 表达式 #2,字符 14:未终止的“s”命令
时间: 2024-04-24 12:23:20 浏览: 94
问题出在第二个 `-e` 参数后面的双引号没有正确闭合,导致 sed 命令无法解析后续的命令。你可以尝试将第二个 `-e` 参数后面的双引号闭合起来,像这样:
```shell
echo "$ss" | sed -e "s/ssrcid/$i/" -e "s/serverid/$@/" >> aaa.conf
```
这样,sed 命令就能正确解析并执行两个替换命令,并将结果附加到 `aaa.conf` 文件中。
相关问题
ubuntu k8s安装部署
### 如何在Ubuntu系统上安装和配置Kubernetes集群
#### 准备工作
确保操作系统环境满足需求,在Ubuntu 22.04 LTS环境中,默认情况下Selinux处于关闭状态,这可以通过`sestatus`命令来验证[^3]。
#### 更新系统并安装必要工具
为了保持系统的稳定性和安全性,建议先更新现有软件包列表,并安装一些必要的实用程序:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl vim git jq htop net-tools bash-completion
```
#### 安装容器运行时(Containerd)
对于容器运行时的选择,推荐采用Containerd作为默认选项。按照官方文档指导完成安装过程,具体步骤如下所示:
1. 设置仓库:
```bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
2. 安装 Containerd.io 并启动服务:
```bash
sudo apt-get update
sudo apt-get install containerd.io -y
```
3. 配置containerd以使用Systemd cgroup驱动器:
```bash
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/' /etc/containerd/config.toml
systemctl restart containerd
```
#### 关闭Swap分区
由于Kubernetes不支持开启swap的情况下运行节点,因此需要禁用它:
```bash
sudo swapoff -a
# 如果希望永久生效,则编辑/etc/fstab文件移除或注释掉swap条目
```
#### 安装kubeadm, kubelet 和 kubectl
利用Apt源管理器获取最新的二进制版本:
```bash
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
```
#### 初始化Master节点
执行初始化命令创建控制平面实例,这里指定了Pod网络CIDR范围以及指定使用的cgroup driver为systemd:
```bash
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --cri-socket unix:///var/run/containerd/containerd.sock
```
#### 配置kubectl访问API Server
为了让当前用户能够方便地管理和操作新建立起来的集群,需设置相应的认证信息:
```bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
#### 安装Pod网络插件(Calico为例)
选择合适的CNI插件是至关重要的一步,此处选用Calico实现跨主机通信能力:
```bash
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
```
等待几分钟直到所有组件都正常运作之后就可以继续添加worker节点到这个集群当中去了。
centos安装k8s单节点
### 安装Kubernetes单节点集群于CentOS
#### 准备工作
为了在CentOS上部署Kubernetes单节点集群,需先更新系统并安装必要的工具包。确保已禁用SELinux以及防火墙服务以免影响后续操作。
```bash
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo systemctl stop firewalld
sudo systemctl disable firewalld
```
#### 配置容器运行时环境Docker
由于Kubernetes依赖容器运行时来管理Pod内的容器实例,在此选用Docker作为默认实现方式之一[^1]。
```bash
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl enable docker
sudo systemctl start docker
```
#### 添加Kubernetes源仓库与安装kubeadm,kubelet和kubectl命令行工具
通过官方yum库获取最新版本软件包,并设置开机自启服务项。
```bash
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
```
#### 初始化Master节点配置文件
编辑`/kind/master.yaml`,指定网络插件参数以适应不同场景需求,此处采用flannel方案为例说明.
```yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
nodeRegistration:
criSocket: /var/run/dockershim.sock
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
networking:
podSubnet: "10.244.0.0/16"
controlPlaneEndpoint: "localhost:6443"
kubernetesVersion: stable-1.20
```
执行初始化指令启动master组件:
```bash
sudo kubeadm init --config=/kind/master.yaml
```
完成上述过程后按照屏幕提示信息继续下一步骤.
#### 设置当前用户的kubeconfig路径以便直接访问API Server.
这一步是为了让普通用户能够方便地管理和查看集群状态而不需要每次都切换root权限账户进行操作.
```bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```
#### 安装CNI(Container Network Interface)插件Flannel
这是为了让各个Node之间可以相互通信所必需的一个步骤,这里选择的是比较流行的开源项目Flannel作为例子展示其具体做法.
```bash
export POD_NETWORK_CIDR="10.244.0.0/16"
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```
此时应该已经成功搭建起了一个简易版的Kubernetes单机实验平台供学习研究之用了!
阅读全文
相关推荐
















