kubernetes 部署

安装

# 使得 apt 支持 ssl 传输
apt-get update && apt-get install -y apt-transport-https

# 下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

# 添加 k8s 镜像源
cat << EOF >/etc/apt/sources.list.d/kubernetes.list
> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
> EOF

# 安装kubelet, kubectl
apt-get update && apt-get install -y kubelet kubectl

# 关掉swap
swapoff -a

  • 关掉swap的原因
    • swap就是当内存不足时将部分内存数据存放到磁盘中,防止OOM
      • 这样会使性能下降,而且不易发觉原因
    • 对于集群化的服务(比如etcd)来说,挂掉一个实例比整个集群都出毛病(etcd没挂,但是服务质量很差)要好

kind单机版部署

# 部署
GO111MODULE="on" go get sigs.k8s.io/kind && kind create cluster

# 卸载
kind delete cluseter

kubeadm部署

  • 官方对kubeadmin的解释是不适用于大规模集群,仅用于快速搭建测试集群
  • 如果在初始化过程中出现了任何Error导致初始化终止了,使用kubeadm reset重置之后再重新进行初始化
  • master节点部署
apt-get install -y kubeadm

# 初始化master节点
kubeadm init \
--apiserver-advertise-address=<your host address> \ #apiserver的部署地址
--image-repository registry.aliyuncs.com/google_containers \ #从国内的镜像源拉取
--pod-network-cidr=10.244.0.0/16 # 使用flannel网络方案必须这样设定
# --ignore-preflight-errors=<错误名> 忽律初始化错误,例如NumCPU

# 根据提示执行以下命令
# 将刚刚部署生成的集群安全配置文件,保存到当前用户的.kube 目录下,kubectl会使用这个目录下的授权信息访问集群
export KUBECONFIG=/etc/kubernetes/admin.conf
cp -i /etc/kubernetes/admin.conf ~/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# 部署网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 检查健康性
kubectl get pod --all-namespaces
kubectl get nodes
  • nodes节点部署
# 在master初始化时会生成token,如果不记得了可以通过下面的命令获取
kubeadm token create --print-join-command
# nodes节点加入master集群
kubeadm join xxxx --token xxxx --discovery-token-ca-cert-hash sha256:xxxx

# kubeadm搭建完环境之后会删除nodes节点上的admin.conf的认证配置文件,如果需要在nodes节点上使用kubectl查询资源,需要将master节点的admin.conf 拷贝到nodes节点
scp /etc/kubernetes/admin.conf <node>:/etc/kubernetes
export KUBECONFIG=/etc/kubernetes/admin.conf

# 如果加入后状态保持not ready,用以下命令查错
kubectl describe node <node name>
# 一般错误是因为node节点没安装网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

debug工具部署

  • 原理类似docker exec和sidecar,优点在于提供了大量debug工具(如curl, netstat, tcpdump等)
    • 业务容器可以保持最小化, 不需要预装任何额外的排障工具
  • README
# 安装
export PLUGIN_VERSION=0.1.1
# linux x86_64
curl -Lo kubectl-debug.tar.gz https://github.com/aylei/kubectl-debug/releases/download/v${PLUGIN_VERSION}/kubectl-debug_${PLUGIN_VERSION}_linux_amd64.tar.gz
tar -zxvf kubectl-debug.tar.gz kubectl-debug
sudo mv kubectl-debug /usr/local/bin/

# 使用
kubectl debug <target pod> --agentless --port-forward

命令行补全

# bash
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
# zsh
echo "source <(kubectl completion zsh)" >> ~/.zshrc
source ~/.zshrc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章