存档2019年12月8日

Registry 私有仓库

docker pull registry

docker run -itd –name my_registry -p 5000:5000 -v /opt/registry_images:/var/lib/registry registry:2.7.1

vim /etc/docker/daemon.json

增加自己的仓库

{
“insecure-registries”:[“192.168.88.128:5000”],
“registry-mirrors”:[“https://cuzn52fX.mirror.aliyuncs.com”,”https://registry.docker-cn.com”,”https://reg-mirror.qiniu.com”],
“exec-opts”: [“native.cgroupdriver=systemd”]
}

systemctl daemon-reload
systemctl restart docker
Copy到其它机器
scp /etc/docker/daemon.json 192.168.0.28:/etc/docker

查看仓库中的镜像信息
curl http://192.168.88.88:5000/v2/_catalog
{“repositories”:[“coreos/flannel”,”rabbitmq”]}
curl http://192.168.88.88:5000/v2/rabbitmq/tags/list
{“name”:”rabbitmq”,”tags”:[“3-management”]}

Maven

apt install maven

http://maven.apache.org/download.cgi

https://www.runoob.com/maven/maven-setup.html

Maven官网下载

wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

tar -xvf apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3 maven3

vim /etc/profile

#maven
export M2_HOME=/opt/maven/maven3
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin

source /etc/profile

mvn -v

Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_222, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre

修改maven镜像

cd /usr/share/maven/conf
vim settings.xml

<mirrors>
    <mirror>
      <id>aliyun-maven</id>
      <mirrorOf>*mirror</Of>
      <name>aliyun maven mirror</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
  </mirrors>

FYI
*,!jeecg,!jeecg-snapshots
如果不加!jeecg,!jeecg-snapshots,默认所有的依赖都会去阿里云仓库下载,加上后jeecg的依赖包就可以从jeecg私服下载了。

Git

官网地址

https://git-scm.com/downloads

安装

apt install git
git --version

git config --global user.name "sweet"
git config --global user.email "root@xxx.net"

使用

git config --list
git remote rm origin

开始一个工作区(参见:git help tutorial)
clone 克隆一个仓库到一个新目录
init 创建一个空的 Git 仓库或重新初始化一个已存在的仓库

在当前变更上工作(参见:git help everyday)
add 添加文件内容至索引
mv 移动或重命名一个文件、目录或符号链接
reset 重置当前 HEAD 到指定状态
rm 从工作区和索引中删除文件

检查历史和状态(参见:git help revisions)
bisect 通过二分查找定位引入 bug 的提交
grep 输出和模式匹配的行
log 显示提交日志
show 显示各种类型的对象
status 显示工作区状态

扩展、标记和调校您的历史记录
branch 列出、创建或删除分支
checkout 切换分支或恢复工作区文件
commit 记录变更到仓库
diff 显示提交之间、提交和工作区之间等的差异
merge 合并两个或更多开发历史
rebase 在另一个分支上重新应用提交
tag 创建、列出、删除或校验一个 GPG 签名的标签对象

协同(参见:git help workflows)
fetch 从另外一个仓库下载对象和引用
pull 获取并整合另外的仓库或一个本地分支
push 更新远程引用和相关的对象

命令 'git help -a' 和 'git help -g' 显示可用的子命令和一些概念帮助。
查看 'git help <命令>' 或 'git help <概念>' 以获取给定子命令或概念的帮助。

分支与合并

分支在本地完成,速度快。要创建一个新的分支,我们使用branch命令。
git branch test

branch命令不会将我们带入分支,只是创建一个新分支。所以我们使用checkout命令来更改分支。
git checkout test

第一个分支,或主分支,被称为"master"。
git checkout master

对其他分支的更改不会反映在主分支上。如果想将更改提交到主分支,则需切换回master分支,然后使用合并。
git checkout master
git merge test

如果您想删除分支,我们使用-d标识。
git branch -d test

刚创建的github版本库,在push代码时遇到以上错误:

Updates were rejected because the tip of your current branch is behind

有如下几种解决方法:
1,push前先将远程repository修改pull下来
$ git pull origin master
$ git push -u origin master

2,使用强制push的方法:
$ git push -u origin master -f
这样会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候。

3,若不想merge远程和本地修改,可以先创建新的分支:
$ git branch [name] 创建新的分支
$ git push -u origin [name] 提交对分支

4.新版git
git pull origin master --allow-unrelated-histories
git push -u origin master

intellij idea 出现Push rejected的解决方法

这个问题主要是初次上传到远程仓库,远程仓库需要先拉下来跟本地合并,然后才能上传。
git pull
git pull origin master
git pull origin master –allow-unrelated-histories
查看状态信息
git status
检查远程仓库配置
git remote -v
如果远程仓库信息有误,则删除本地仓库配置,并且设置相关地址

git remote rm origin
git remote add origin XXXX

当执行git中的“git pull origin master –allow-unrelated-histories”命令时,会出现“ couldn’t find remote ref –allow-unrelated-histories”的错误,输入如下命令即可解决:
git pull –rebase origin master
强制覆盖已有的分支(可能会丢失改动)
git push -u origin master -f

如何从从detached HEAD状态解救出来

  • 基于本次提交创建临时分支
    输入 $git branch temp fef4501 使用git branch 分支名 操作ID 这句命令能够创建一个新的分支,但要注意此时我们还没有切换到这个分支上,这个分支上面代码跟我刚才提交完之后的一样.
  • 切换到工作分支并合并代码
    输入 $git checkout ask_11_16 意味着我已经切换到ask_11_16分支,这个分支是我之前想要提交的分支. 然后 $git merge temp 这行命令过后我们已经上次commit合并到ask_11_16上了,此时终端状态为 Your branch is ahead of ‘origin/ask_11_16’ by 1 commit. 我们只需要$git push即可把本次提交push到远程分支. 这时候检查代码,perfect!正式我们想要的状态.
  • 删除temp分支
    大功告成,至于temp分支已经没有了利用价值,本着过河拆桥的精神我不得不输入 $git branch -d temp 来删除temp分支.

分支管理与合并(merge与rebase)

gitee.com

创建 git 仓库:
mkdir eureka-client
cd eureka-client
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/xxx/eureka-client.git
git push -u origin master
已有仓库?
cd existing_git_repo
git remote add origin https://gitee.com/xxx/eureka-client.git
git pull origin master
git push -u origin master
git push -u origin master -f (强制上传会造成服务器的文件丟失,只适合初始化使用)

分支提交合并
在码云上先新建分支 test
git pull 本地获取同步服务器上的分支
git checkout test 切换支新的分支
git push  提交保存到新的分支
确认新功能开发完成后,切换回主分支,合并后再提交
git checkout master
git merge origin/test
git push

Gitlab Create a new repository

git clone http://xxx/root/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Push an existing folder

cd existing_folder
git init
git remote add origin http://xxx/root/test.git
git add .
git commit -m "Initial commit"
git push -u origin master

Push an existing Git repository

cd existing_repo
git remote rename origin old-origin
git remote add origin http://xxx/root/test.git
git push -u origin --all
git push -u origin --tags

Tomcat

Tomcat官网

wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.29/bin/apache-tomcat-9.0.29.tar.gz

tar -xvf apache-tomcat-9.0.29.tar.gz

mv apache-tomcat-9.0.29 tomcat9

修改tomcat 端口号
root@ser88:/opt/tomcat/tomcat9/conf# vi server.xml

    <!--port default 8080 change 8081 -->
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

Docker

docker pull tomcat:9.0.30-jdk8

9.0.30-jdk8-openjdk9.0-jdk8-openjdk9-jdk8-openjdk9.0.30-jdk89.0-jdk89-jdk8

jenkins# docker run -itd –name jenkins-tomcat -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat:9.0.30-jdk8

docker run -itd –name jenkins-tomcat -p 8080:8080 -v /opt/jenkins:/usr/local/tomcat/webapps tomcat:9.0.30-jdk8

Java 安装配制

Java,OpenJDK和Oracle Java有两个主要的实现,几乎没有区别,只是Oracle Java有一些额外的商业功能。

Ubuntu系统

  • OpenJDK
    • 安装OpenJDK 10 JDK
      $sudo apt install default-jdk

    • 安装OpenJDK 8 JDK
      $sudo apt install openjdk-8-jdk
      install path /usr/lib/jvm/java-8-openjdk-amd64

    • 安装OpenJDK 8 JRE
      apt install openjdk-8-jre-headless or apt install default-jre

  • Oracle java

    • 进入官网下载
    • 选择需要的版本,进入下载页面
    • 下载完成解压
    • 创建安装目录
      本人安装目录是/usr/java下,需要cd /usr进入usr目录
      创建java文件夹,命令sudo mkdir java
      为了后续方便,将java目录赋予最高权限,命令sudo chmod 777 java
    • 复制并解压
      将下载的文件移动到java目录下
      tar -zxvf jdk-8u144-linux-x64.gz
    • 配置java
    输入sudo vim /etc/profile
    #Java安装目录
    export JAVA_HOME=/usr/java/jdk1.8.0_144
    #下面都一样啦
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    export JRE_HOME=$JAVA_HOME/jre
    
    • 启用java
      source /etc/profile
    • 检查java
      java -version
  • Apt安装
    • 安装工具
      $sudo apt install software-properties-common dirmngr
    • 添加WebUpd8存储库并安装Oracle Java:
      $sudo add-apt-repository ppa:webupd8team/java
      $sudo apt update
    • 安装Oracle Java 8
      $apt-get install oracle-java8-installer
    • 多版本切换
      $sudo update-alternatives –config java

MAC多版本

vi ~/.bash_profile
#JAVA
# 实际安装路径 /Library/Java/JavaVirtualMachines
#JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
export JAVA_8_HOME="$(/usr/libexec/java_home -v 1.8)"
export JAVA_10_HOME="$(/usr/libexec/java_home -v 10.0)"

alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk10='export JAVA_HOME=$JAVA_10_HOME'

# 默认使用JDK8
export JAVA_HOME=$JAVA_8_HOME

PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

export PATH
export CLASSPATH

source ~/.bash_profile
use jdk8 ro jdk10  change version

Windows

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_202(jdk目录路径)
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
Path:%JAVA_HOME%\bin;%PATH%
注意:如果是Windows10系统,分开写
%Java_Home%\bin
%Java_Home%\jre\bin

显示jvaa安装路径
whereis java (java安装路径)
which java (java执行路径)

echo $JAVA_HOME(java环境变量)
echo $PATH (环境变量路径)
update-alternatives –config java
jrunscript -e ‘java.lang.System.out.println(java.lang.System.getProperty(“java.home”));’ echo $JAVA_HOME

卸载

sudo apt-get autoremove default-jdk
如果不能卸载干净,用下面的方法:
jdk彻底卸载:
(1) apt-get update
(2) apt-cache search java | awk ‘{print($1)}’ | grep -E -e ‘^(ia32-)?(sun|Oracle)-java’ -e ‘^openjdk-’ -e ‘^icedtea’ -e ‘^(default|gcj)-j(re|dk)’ -e ‘^gcj-(.*)-j(re|dk)’ -e ‘java-common’ | xargs sudo apt-get -y remove
(3) apt-get -y autoremove

2、清除配置信息: dpkg -l | grep ^rc | awk ‘{print($2)}’ | xargs sudo apt-get -y purge

3、清除java配置及缓存: bash -c ‘ls -d /home/*/.java’ | xargs sudo rm -rf

4、手动清除JVMs: rm -rf /usr/lib/jvm/*

5、java -version 查看,卸载成功

持续集成 jenkins

安装java环境及tomcat

下载jenkins war包,放在tomcat的app目录

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

启动tomcat

— 设置为后台运行并修改端口

nohup java -jar jenkins.war --httpPort=8888 >/dev/null 2>&1 &

官网

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

brew install jenkins-lts

dcoker

To use the latest LTS: docker pull jenkins/jenkins:lts
To use the latest weekly: docker pull jenkins/jenkins
docker run -itd --name jenkins -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

volume ls
docker volume inspect jenkins_home
"Mountpoint": "/var/lib/docker/volumes/jenkins_home/_data",

docker volume create my-vol

enkins配置文件备份:
docker cp focused_bhaskara:/var/jenkins_home ./jenkins_home
其中focused_bhaskara为当前运行的jenkins容器名字,通过docker ps查看names即可得到。

docker run \
--name jenkins \
  -itd \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(which git):/usr/bin/git \
  -v /apache-maven-3.5.4:/usr/bin/maven \
  -v $JAVA_HOME:/usr/bin/jdk \
  jenkinsci/blueocean
or
mkdir /opt/jenkins/jenkins_home
sudo chown -R 1000 /opt/jenkins/jenkins_home

docker run -itd --name my_jenkins -p 800:8080 -v /opt/jenkins/jenkins_home:/var/jenkins_home -v /opt/jenkins/war:/usr/local/tomcat/webapps/ -v /usr/bin/git:/usr/bin/git -v /opt/java/jdk1.8.0_231:/opt/java/jdk1.8.0_231 -v /opt/maven/maven3:/opt/maven/maven3 -v /var/lib/docker:/var/lib/docker tomcat:9.0.30-jdk8

安装插件:SSH /Publish Over SSH /Git Parameter/Maven Integration/Rebuilder/Safe Restart/Generic Webhook Trigger/Gitlab Plugin/Docker Compose Build Step/Docker

配制全局安全属性-配制管理员,

系统管理-添加用户,同上授权

echo $JAVA_HOME

which git

echo $M2_HOME

应用部署服务器配制:内网测试环境可以关闭防火墙

service iptables stop

service iptables status

设置jenkins到K8s master ssh 免密登陆

ssh-keygen -t rsa 生成密钥 ssh-genkey -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.10.45

插件安装不成功

jenkins->系统管理->管理插件->高级 替换最下方【升级站点】中的URL

将http://updates.jenkins-ci.org/update-center.json
https://updates.jenkins.io/update-center.json

替换为http://mirror.esuni.jp/jenkins/updates/update-center.json

或手动安装,下载Jenkins的插件的地址:https://plugins.jenkins.io/
进入Jenkins,进入系统管理,进入管理插件,进入高级,上传插件文件,开始上传

自动化构建

  1. 丢弃旧的构建 保持构建的天数2 保持构建的最大个数 2
  2. 参数化构建过程 name:Branch Parameter Type:Branch or tag Default Value:origin/master
  3. Repository URL: Credentials:
  4. 构建触发器
    1. 设置GitLab的webhook
    2. jenkins中,在 系统管理 -> 全局安全管理中, 勾选 匿名用户具有可读权限
    3. 在工程中,点击 构建触发器中选中的Build When a change is pushed右下角的高级选项,有一个Secret token,点击 Generate,会生成一个安全代码,复制到GitLab webhook中的url下面
  5. Build
    1. Root POM: pom.xml
    2. Goals and options:
  6. Post Steps
    1. Run regardless of build result
    2. 执行shell code

ERROR

  1. valid crumb -> 在安全设置中,不勾选 CSRF
  2. 找不到docker-compose -> sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  3. 无docker权限 Got permission denied while trying to connect to the Docker daemon socket at unix://var…
    sudo gpasswd -a jenkins docker #将用户加入到docker用户组中
    sudo newgrp – docker #更新用户组
    sudo service jenkins restart #重启Jenkins服务

备份恢复

FYI

Kubernetes K8s

Service 服务信息

kubectl get service –all-namespaces

Deployment 部署信息

kubectl create -f test.yml

kubectl delete -f test.yml

kubectl get deployment –all-namespaces

K8S文档

使用阿里的安装 k8s安装

swapoff -a 禁用虚拟内存 直接永久关闭 swap ,修改 /etc/fstab 文件,注释掉 swap那行。
apt update
apt install -y apt-transport-https ca-certificates curl software-properties-common
#docker源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add –
add-apt-repository “deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable”

#kubeadm源
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add –
cat </etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

#安装docker、kubeadm以及k8s中不会通过docker容器部署的组件
apt update
apt install -y docker-ce kubeadm kubelet kubectl

开始初始化k8s

kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
成功后按提示操作并记住join信息

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看k8s状态

kubectl --namespace kube-system get pod

(sysctl net.bridge.bridge-nf-call-iptables=1)
,对于 k8s 来说,安装一个插件其实就是应用一个插件的配置文件, kubectl apply 就是应用配置文件的命令。另外这个命令还支持 http 协议。 flannel 的配置文件我们可以直接在 githubflannel 的官方仓库拿到 url ,是 https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

(

curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

增加:
tolerations:
下面的
– key: node.kubernetes.io/not-ready
operator: Exists
effect: NoSchedule

再执行
kubectl apply -f kube-flannel.yml

)

插件只在master中执行安装,安装完成以后我们等个几分钟再来看看组件的状态,都是running才正常

join 命令有三个参数,第一个是 masterip 和端口,第二个是 token ,第三个是证书的 hash 值。
join24小时之后 token 就过期,重新生成脚本

<

div>

#!/bin/bash

if [ $EUID -ne 0 ];then
    echo "You must be root (or sudo) to run this script"
    exit 1
fi

if [ $# != 1 ] ; then
    echo "Usage: $0 [master-hostname | master-ip-address]"
    echo " e.g.: $0 api.k8s.hiko.im"
    exit 1;
fi

token=`kubeadm token create`
cert_hash=`openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'`

echo "Refer the following command to join kubernetes cluster:"
echo "kubeadm join $1:6443 --token ${token} --discovery-token-ca-cert-hash sha256:${cert_hash}"
 代码复制到 mster主机 的新文件中,命名 join.sh ,然后执行他:./join.sh ipordom

kubernetes: 如何自动生成join master的命令

kubeadm token

在客户机输入joih命令

查看节点

kubectl get nodes

kubectl get po –all-namespaces / kubectl get po –all-namespaces -o wide
FYI google安装

apt-get update && apt-get install -y apt-transport-https curl

科学上网,设置代理

export http_proxy=10.10.10.99:1087 && export https_proxy=10.10.10.99:1087

echo $http_proxy

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-kkey add –
cat </etc/apt/sources/list.d/kubernetes.list
deb http://apt.kubernetes.io/kubernetes-xenial main
EOF

apt-get update && apt-get install -y kubelet kubeadm kubectl

or apt-get install -c apt-poxy-config -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl 禁止更新
手动下载两个依赖镜像。 k8s 需要的镜像并没有保存在 dockerhub 上,而是保存在 google 的服务器上。好在使用 kubeadm 部署 k8s 时可以指定其他的镜像仓库,而 dockerhub 上有另一个镜像仓库,里面是 k8s 组件的镜像。这个镜像仓库叫做 mirrorgooglecontainers 。有两个依赖镜像没有被放到这个镜像仓库中:coredns/coredns 和 coreos/flannel 。我们先把这两个镜像下载下来。命令如下:
docker pull mirrorgooglecontainers/coredns:1.2.6

docker pull coredns/coredns:1.2.6
docker tag coredns/coredns:1.2.6 mirrorgooglecontainers/coredns:1.2.6

wget https://github.com/coreos/flannel/releases/download/v0.11.0/flanneld-v0.11.0-amd64.dockerdocker load < flanneld-v0.11.0-amd64.docker

第一个镜像是 k8s 内部使用的DNS和服务发现服务镜像,第二个镜像是网络插件 flannel 的镜像。第一个镜像需要改名与 mirrorgooglecontainers 一致, k8s 在安装开始的时候就会需要它,第二个镜像不用改名之后会用到。
开始部署 k8s ,命令如下:

kubeadm init –image-repository=mirrorgooglecontainers –pod-network-cidr=10.244.0.0/16

kubectl get pods –namespace=kube-system

插件所有 pod

是否都是 running

状态。如果不是 running

状态就需要查看 pod 描述

或者 pod 日志

来排查错误,这两条命令分别是:

查看pod描述,主要看最下面的events

kubectl -n kube-system describe pod xxxxxxx #pod名称

查看pod日志

kubectl -n kube-system logs xxxxxxx # pod名称#删除kubectl -n kube-system delete pod xxxxxxx # pod名称

忽略报错继续执行
在 init 时加上参数 –ignore-preflight-errors 后面跟错误的名称。

在重新执行 init 时,请先执行

重启 kubeadm reset

systemctl daemon-reload
systemctl restart docker

重启相关的服务

$systemctl restart kube-apiserver
$systemctl restart kube-controller-manager
$systemctl restart kube-scheduler

节点 服务
master etcd、kube-apiserver、kube-controller-manager和kube-scheduler组件
node flannel 、kubelet、kube-proxy

#让配置生效
systemctl daemon-reload

#启动服务
systemctl start etcd kube-apiserver.service kube-controller-manager kube-scheduler

#重启服务
systemctl restart etcd kube-apiserver.service kube-controller-manager kube-scheduler

#设定开机启动
systemctl enable etcd kube-apiserver.service kube-controller-manager kube-scheduler

#通过systemctl status 来验证服务启动的状态。

#日志查看
cat /var/log/messages |grep kube

#启动服务
systemctl start kubelet kube-proxy

#设定开机启动
systemctl enable kubelet kube-proxy

===================================================

安装 kubeadm

安装 kubectl

kubectl 是一个用于管理 Kubernetes 的命令行工具。

Linux安装kubectl(使用如下其中一种方式):

使用国内阿里云源安装

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl

使用谷歌源安装(国内网路会很慢)
~ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/kubectl

MacOS安装kubectl(使用如下其中一种方式):

通过brew方式安装
~ brew install kubectl

通过国内阿里云源安装
~ curl -LO http://kubernetes.oss-cn-hangzhou.aliyuncs.com/kubernetes-release/release/curl -s http://kubernetes.oss-cn-hangzhou.aliyuncs.com/kubernetes-release/release/stable.txt/bin/darwin/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/kubectl

通过谷歌源安装(国内网路会很慢)
~ curl -LO https://storage.googleapis.com/kubernetes-release/release/curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt/bin/darwin/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/kubectl

安装完成后,查看版本:
~ kubectl version

经常Pull失败的文件

docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64
docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
docker rmi quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1 gcr.io/kubernetes-helm/tiller:v2.14.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.25.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.25.1 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.25.1

docker pull googlecontainer/defaultbackend-amd64:1.5
docker tag googlecontainer/defaultbackend-amd64:1.5 k8s.gcr.io/defaultbackend-amd64:1.5
docker rmi googlecontainer/defaultbackend-amd64:1.5

docker pull sacred02/kubernetes-dashboard-amd64:v1.10.1
docker tag sacred02/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker rmi sacred02/kubernetes-dashboard-amd64:v1.10.1

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.2 gcr.io/google_containers/metrics-server-amd64:v0.3.2
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.2

docker pull registry.cn-hangzhou.aliyuncs.com/jaxzhai/k8szk:v3
docker tag registry.cn-hangzhou.aliyuncs.com/jaxzhai/k8szk:v3 gcr.io/google_samples/k8szk:v3
docker rmi registry.cn-hangzhou.aliyuncs.com/jaxzhai/k8szk:v3

k8s:

MY_REGISTRY=gcr.azk8s.cn/google-containers

拉取镜像

docker pull {MY_REGISTRY}/kube-apiserver:v1.15.1
docker pull {MY_REGISTRY}/kube-controller-manager:v1.15.1
docker pull {MY_REGISTRY}/kube-scheduler:v1.15.1
docker pull {MY_REGISTRY}/kube-proxy:v1.15.1
docker pull {MY_REGISTRY}/pause:3.1
docker pull {MY_REGISTRY}/etcd:3.3.10
docker pull ${MY_REGISTRY}/coredns:1.3.1

添加Tag

docker tag {MY_REGISTRY}/kube-apiserver:v1.15.1 k8s.gcr.io/kube-apiserver:v1.15.1
docker tag {MY_REGISTRY}/kube-controller-manager:v1.15.1 k8s.gcr.io/kube-controller-manager:v1.15.1
docker tag {MY_REGISTRY}/kube-scheduler:v1.15.1 k8s.gcr.io/kube-scheduler:v1.15.1
docker tag {MY_REGISTRY}/kube-proxy:v1.15.1 k8s.gcr.io/kube-proxy:v1.15.1
docker tag {MY_REGISTRY}/pause:3.1 k8s.gcr.io/pause:3.1
docker tag {MY_REGISTRY}/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag ${MY_REGISTRY}/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

#删除无用的镜像
docker images | grep {MY_REGISTRY} | awk ‘{print “docker rmi “ 1“:”$2}’ | sh -x
echo “end”

节点卸载

使用kubeadm 命令 删除节点 。

kubectl drain –delete-local-data –force –ignore-daemonsets
kubectl delete node
kubeadm reset

开启IPV4转发
在/etc/sysctl.conf新添加如下参数
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

生效命令:
sysctl -p
查看
sysctl -a|grep “ip_forward”

Mysql

sudo docker pull mysql:5.6

sudo docker run -itd -p 3306:3306 --name mysql -v ~/mysql/data:/var/lib/mysql -v ~/mysql/conf:/etc/mysqll/conf.d -v ~/mysql/logs:/var/log/mysql  -e MYSQL_ROOT_PASSWORD=PW123456 --restart always mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
PS:The default configuration for MySQL can be found in /etc/mysql/my.cnf, which may !includedir additional directories such as /etc/mysql/conf.d or /etc/mysql/mysql.conf.d. Please inspect the relevant files and directories within the mysql image itself for more details.

远程不能访问时需要进入docker本地客户端设置远程访问账号

$ sudo docker exec -it mysql bash
$ mysql -u root -p PW123456
mysql> grant all privileges on *.* to root@'%' identified by "password";

修改MySQL配置文件有两种方法:
一是进入容器,修改容器里的MySQL的配置文件,然后重新启动容器:
docker exec -it mysqlserver /usr/bin/bash
然后可以进入容器的命令行模式,接着修改 /etc/mysql/my.cnf 文件即可
二是挂载主机的mysql配置文件 -v /my/custom:/etc/mysql/conf.d

查看编码

show variables like 'character%';
show variables like 'collation_%';

SSH

  • SERVER
    sudo apt -y install openssh-server
    sudo vi /etc/ssh/sshd_config
    在行”#PermitRootLogin prohibit-password”后
    添加行”PermitRootLogin yes”并保存。
    sudo update-rc.d ssh defaults”开启ssh服务开机自启动
    输入命令”sudo service sshd start”启动服务
    输入命令”sudo service sshd status”查看服务运行状态

  • CLIENT
    sudo apt -y install openssh-client