Kubernetes生产环境部署

Kubernetes生产环境部署

众所周知Kubernetes集群的部署比较繁琐复杂,这里列出常见的几种部署方式及过程.

官方现在提供2种主要的部署方式:

  • Kubespray : 基于Ansible的集群自动化部署,支持的平台更广泛,部署更灵活
  • Kubernetes Operations (kops): 生产环境集群自动化部署工具, 目前只支持AWS, GCE云环境.

Kubespray部署实战

说明

由于国内网络访问docker.com及镜像, kubernates, gcr.io等相关镜像极不稳定,替换了相关安装源.
这里使用的是我的Kubespray fork版本

部署节点前提

  1. 需要关闭swap
    > sudo swapoff -a
  2. 根据自己的节点信息修改inventory/mycluster/hosts.ini
    我的例子
moon1 ansible_ssh_host=10.20.30.101  
moon2 ansible_ssh_host=10.20.30.102 
moon3 ansible_ssh_host=10.20.30.103
moon4 ansible_ssh_host=10.20.30.104 
moon5 ansible_ssh_host=10.20.30.105 
moon6 ansible_ssh_host=10.20.30.106 

[kube-master]
moon1
moon2


[etcd]
moon1
moon2
moon3

[kube-node]
moon2
moon3
moon4
moon5
moon6

[kube-ingress]
moon2
moon3

[k8s-cluster:children]
kube-master
kube-node
kube-ingress

国内镜像及加速的常见步骤

docker 阿里云镜像

# step 1: 安装必要的一些系统工具
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
# 查找Docker-CE的版本: apt-cache madison docker-ce
# 安装指定版本的Docker-CE
 sudo apt-get -y install docker-ce=17.03.2~ce-0~ubuntu-xenial

docker镜像 阿里云加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://nz4awhki.mirror.aliyuncs.com"]
}
EOF
# 重启以生效
sudo service docker restart

kubernetes镜像

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF

gcr.io/google-containers镜像

将相关镜像URL里的 gcr.io/google-containers部分替换为anjia0532 .

运行Ansible Playbook命令

首次运行,建议:
1. 开启详情日志: -v
2. 如果非root,切换sudo用户: -u xulz -b
3. 建议先运行其中一台节点: –limit moon1

ansible-playbook -u xulz -b -i inventory/mycluster/hosts.ini cluster.yml –limit moon1

问题排查

如果ansible运行失败,根据最后的控制台错误做相应的修正并重试.
日志的存放位置为节点主机的: /var/log/containers/

注: 如果以–check的Dry Run方式运行,会造成运行错误(因为脚本依赖于某些步骤的实际运行结果为环境变量),所以不要使用这种模式.

登录Kubernetes Dashboard

### 创建管理员账号
kubectl create -f admin-role.yaml
# 找到admin-token开头的token名字
kubectl  -n kube-system get secret
# 获取相应的token
kubectl -n kube-system get secret admin-token-tmh9v -o jsonpath={.data.token}|base64 -d
# 也可以直接运行 kubectl -n kube-system describe secret admin-token-tmh9v 获取token

# 访问网址: https://<first_master>:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
# 选择以token方式登录, 输入上一步获取的token
# 登录成功

admin-role.yaml的具体内容见这里

关于Dashboard的说明

Dashborad支持token和kubeconfig两种认证登录方式,而kubeconfig的方式也需要token字段。
默认命名空间有: default, kube-public, kube-system

扩展阅读

发表评论

电子邮件地址不会被公开。 必填项已用*标注