默认下载安装运行会有问题,但可以使用下列命令取消安全限制
xattr -d com.apple.quarantine /Library/Java/JavaVirtualMachines/graalvm-ce-java8-20.1.0
欲穷千里目,更上一层楼
默认下载安装运行会有问题,但可以使用下列命令取消安全限制
xattr -d com.apple.quarantine /Library/Java/JavaVirtualMachines/graalvm-ce-java8-20.1.0
nohup java -jar my.jar >/dev/null 2>&1 &
对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。
对于2 ,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
可以把/dev/null 可以看作”黑洞”. 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
在>左边的2,表示stderr标准错误。不需要加&
但是在>右边的1必须加&,才表示stdout标准输出
如果不加&,表示的是文件名
另外>左边如果不加,默认是1
ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1测试,没有xxx这个文件的错误输出到了文件1中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。
使用 ss 查看
ss 一般用于转储套接字统计信息。它还可以显示所有类型的套接字统计信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。
ss -lntpd | grep :22
使用 netstat 查看
netstat 能够显示网络连接、路由表、接口统计信息、伪装连接以及多播成员。目前netstat 已经过时了,都推荐使用ss来代替。
netstat -tnlp | grep :22
使用 lsof 查看
lsof(list open files)是一个列出系统上被进程打开的文件的相关信息。
lsof -i tcp:22
使用 fuser 查看
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息。fuser只把PID输出到标准输出,其他的都输出到标准错误输出。
fuser 22/tcp
1 准备3节点机器,编辑 /etc/hosts提供域名访问
172.31.118.199 dev-node-1 dev-node-1
172.31.118.200 dev-node-2 dev-node-2
172.31.118.201 dev-node-3 dev-node-3
2 在3个节点上都安装Container Runtime。这里使用Docker
apt-get update && apt-get install -y \
apt-transport-https ca-certificates curl software-properties-common gnupg2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add –
add-apt-repository \
“deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable”
apt-get update && apt-get install -y \
containerd.io=1.2.13-1 \
docker-ce=5:19.03.8~3-0~ubuntu-$(lsb_release -cs) \
docker-ce-cli=5:19.03.8~3-0~ubuntu-$(lsb_release -cs)
cat > /etc/docker/daemon.json <<EOF
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“storage-driver”: “overlay2”
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
3. 在3个节点上安装kubeadm,kubelet和kubectl
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add –
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
4 配置k8s cluster
在master节点运行。
注意:–pod-network-cidr=10.244.0.0/16 是和后面的flannel关联的,其他设置会导致网络连接问题。需要重置或完全重装才能解决
kubeadm init –control-plane-endpoint=172.31.118.199 –apiserver-advertise-address=172.31.118.199 –pod-network-cidr=10.244.0.0/16 –ignore-preflight-errors=NumCPU
在master节点运行
这里选择flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
在非master节点运行。
记住token。使用类似指令在非master节点加入集群
kubeadm join 172.31.118.199:6443 –token 28lepr.xoji43nzk569dhen \
–discovery-token-ca-cert-hash sha256:22a09d232518d504a40ea0048f5eedf13f3fabcdb3c9ef01a05f2cc3f50950ba
5 安装helm到master
使用helm在master节点运行
helm install nfs-client-provisioner stable/nfs-client-provisioner –set nfs.server=172.31.118.199 –set nfs.path=/data
配置storageclass
kubectl patch storageclass nfs-client -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:”true”}}}’
安装mysql
helm install mysql –set service.type=NodePort bitnami/mysql
6 异常处理:清理重置cluster
kubectl drain dev-node-3 –delete-local-data –force –ignore-daemonsets
kubectl drain dev-node-2 –delete-local-data –force –ignore-daemonsets
kubectl drain dev-node-1 –delete-local-data –force –ignore-daemonsets
kubectl delete nodes dev-node-3
kubectl delete nodes dev-node-2
kubectl delete nodes dev-node-1
kubeadm reset
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
rm /etc/cni/net.d/10-flannel.conflist
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
systemctl start kubelet
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。