因為新版的k8s的token已經有時間效期,
所以在安裝完後,隔一陣子想要加入新的節點就會出現舊的join token無法使用.
這時候可以用kubeadm token generate重新產生新的token,並用下列語法印出join指令.
kubeadm token create `kubeadm token generate` --print-join-command --ttl=0
因為新版的k8s的token已經有時間效期,
所以在安裝完後,隔一陣子想要加入新的節點就會出現舊的join token無法使用.
這時候可以用kubeadm token generate重新產生新的token,並用下列語法印出join指令.
kubeadm token create `kubeadm token generate` --print-join-command --ttl=0
看到一個不錯的範例
kubectl get pods --all-namespaces -o wide | awk '{print $1 " " $2}' | while read AA BB; do echo "$AA" "$BB"; done
echo "[info] 建立測試環境";
docker network create mongo-cluster >/dev/null 2>&1
docker rm -f mongo1 mongo2 mongo3 >/dev/null 2>&1
for i in 1 2 3
do
echo " mongo${i} 建立"
docker run \
-d \
-p 3000$i:27017 \
--name mongo$i \
--net mongo-cluster \
mongo mongod --replSet my-mongo-set >/dev/null 2>&1
done
echo " 設定mongo cluster"
docker exec -it mongo3 mongo --eval "config={\"_id\":\"my-mongo-set\",\"members\":[{\"_id\":0,\"host\":\"mongo1:27017\"},{\"_id\":1,\"host\":\"mongo2:27017\"},{\"_id\":2,\"host\":\"mongo3:27017\"}],\"settings\": { \"electionTimeoutMillis\": 500 }}; rs.initiate(config)"
#https://github.com/mongodb/mongo-php-library
require_once __DIR__ . "/vendor/autoload.php";
try{
$client = new MongoDB\Client("mongodb://mongo1:27017,mongo2:27017,mongo3:27017",[],[
'typeMap' => [
'array' => 'array',
'document' => 'array',
'root' => 'array',
],
]);
$db = $client->selectDatabase('test');
$cursor = $db->command(['isMaster' => 1]);
echo "[info] 成功連線至: {$cursor->toArray()[0]['primary']}\n";
} catch(Exception $e) {
echo "[error] 無法線連\n";
exit;
}
{ //若Collection:testA不存在則建立.
if((iterator_count($db->listCollections([
'filter'=>[
'name'=>'testA'
]
])))==0) //當數量為0時,建立testA
$db->createCollection('testA');
}
//連線至Collection:testA
$collection=$db->selectCollection('testA');
//若沒有任何資料,則建立100則隨機資料
if($collection->count()==0){
for($i=0;$i<100;$i++){
$insertOneResult = $collection->insertOne([
'idx' => $i,
'value' => "{$i}, rand: ".rand(0,9999),
]);
}
}
//取得最後三筆資料
foreach($collection->find([],[
'limit' => 3,
'projection' => ['_id'=>0],
'sort' => [
'idx'=>-1
]
]) as $rs){
echo "\tidx:{$rs['idx']}\tvalue:{$rs['value']}\n";
}
測試dd image的建立與擴展
#建立
dd if=/dev/zero of=test001.img bs=10M count=10
#格式化
mkfs -F test001.img
#建立掛載資料夾
mkdir -p /tmp/disk/test001
#掛載
mount -t ext2 -o loop $PWD/test001.img /tmp/disk/test001
#隨便產生一個90Mb的檔案
dd if=/dev/zero of=/tmp/disk/test001/xxxx.img bs=10M count=9
#查看可用空間
df -h | grep /dev/loop
#解除掛載
umount /tmp/disk/test001
#磁碟檢查
e2fsck -f test001.img -y
#調整空間大小至200M
resize2fs test001.img 200M
#重新掛載
mount -t ext2 -o loop $PWD/test001.img /tmp/disk/test001
#調整空間
losetup -c /dev/loop0
resize2fs /dev/loop0
#查看可用空間
df -h | grep /dev/loop
#解除掛載
umount /tmp/disk/test001
#刪除測試檔案
rm -f -r test001.img
剛剛因為要測試mysql跟mariaDB的語法是否有不同
因此用下列語法快速建立mysql來進行測試
#建立mysql server
docker run \
--name some-mysql \
-e MYSQL_ROOT_PASSWORD=abcdefg \
-d mysql:5.7
sleep 10
#建立mysql client
docker run \
-it \
--rm \
--link some-mysql:mysqlA \
mysql sh -c 'exec mysql -h mysqlA -uroot -pabcdefg'
SQL測試語法
create database TEST1;
use TEST1;
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`geo` point DEFAULT NULL
);
INSERT INTO `test`(`id`, `geo`) VALUES (1,ST_GEOMFROMTEXT('POINT(121 23)',4326));
select * from `test` where 1;
壓縮path:
tar zcvf output.tar.gz path
# 使用變數
D=dir1 && tar zcvf ${D}.tar.gz ${D}
解壓縮目前的資料夾:
tar zxvf input.tar.gz
過去很習慣使用vim建立新檔案
但是最近大量使用docker container的時候,面臨到沒有安裝vim的窘境.
因此找出了使用cat建立新檔案的方法,也順便建立使用script來產生檔案的方法.
使用方式如下:
cat <<EOF > example.txt
Hello World.
This is a test.
EOF
以
為開頭,緊接著檔名,換行後就是要建立的內容,可允許多行輸入.cat <<EOF
最後以
作為結束.EOF\n
如果要透過sudo指令進行,則使用方式如下:
sudo bash -c 'cat <<EOF > example.txt
Hello World.
This is a test.
EOF'
查看log最後30行的方法
sudo cat /var/log/syslog | tail -n 30
每5秒,查看現在正在執行php的程序
watch -n 5 'sudo ps aux | grep php | tail -n 5'
顯示log中,最新有關於named的資訊
tail -f /var/log/syslog | grep named
通常使用putty進行ssh連線時,常常遇到要長時間的執行一個指令
而半徒若將putty關閉的話,這個程式也將會被終止.
因此必須將程式放置到背景中執行
方法1: 執行結果輸出至nohup.out
nohup command &
方法2: 指定輸出logfile
nohup command > logfile &
方法3: 不要輸出任何資訊
nohup command >/dev/null 2>&1 &
若要搭配sudo的話,其用法如下
sudo sh -c 'nohup command &'