Kubernetes K8s

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”

You must be logged in to post a comment