CentOS 7 安装 docker、 Kubernetes
centos7安装docker和k8s的记录
修改yum仓库
阿里云跳过
- 安装yum工具
1yum install -y yum-utils device-mapper-persistent-data lvm2
- 备份原仓库文件
1mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 添加阿里云仓库文件
1yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo
- 修改为基础仓库文件
1mv /etc/yum.repos.d/Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
- 添加docker的阿里云源
1yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新缓存
1yum makecache fast
安装docker-ce
- yum安装docker
1yum install -y docker-ce
- 配置镜像加速器
1mkdir -p /etc/docker
2vim /etc/docker/daemon.json
3{
4 "exec-opts": ["native.cgroupdriver=systemd"],
5 "log-driver": "json-file",
6 "log-opts": {
7 "max-size": "100m"
8 },
9 "storage-driver": "overlay2",
10 "storage-opts": [
11 "overlay2.override_kernel_check=true"
12 ]
13}
14systemctl daemon-reload
15systemctl restart docker
禁用linux swap
- 编辑
/etc/fstab
,注释swap行 - 输入
swapoff -a
- 重启
禁用selinux
1setenforce 0
关闭防火墙
1systemctl disable firewalld
2systemctl stop firewalld
设置k8s源
1vim /etc/yum.repos.d/kubernetes.repo
2[kubernetes]
3name=Kubernetes
4baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
5enabled=1
6gpgcheck=0
7repo_gpgcheck=0
8gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
9 http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
安装kubectl
1yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
2vim /etc/sysctl.d/k8s.conf
3net.bridge.bridge-nf-call-ip6tables = 1
4net.bridge.bridge-nf-call-iptables = 1
5net.ipv4.ip_forward = 1
6sysctl --system
7systemctl daemon-reload
8systemctl restart kubelet
设置自启动
1systemctl enable docker && systemctl start docker
2systemctl enable kubelet && systemctl start kubelet
拉取镜像
初始化kubeadm
基于flannel
1kubeadm init --kubernetes-versio=$(kubeadm version -o short) --apiserver-advertise-address=192.168.1.109 --pod-network-cidr=10.244.0.0/16
2mkdir -p $HOME/.kube
3sudo cp -i /etc/kubernets/admin.conf $HOME/.kube/config
4sudo chown $(id -u):$(id -g) $HOME/.kube/config
取消污点
1kubectl taint nodes --all node-role.kubernetes.io/master-
安装flannel
1docker pull quay.azk8s.cn/coreos/flannel:v0.11.0-amd64
2docker tag quay.azk8s.cn/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
3docker rmi quay.azk8s.cn/coreos/flannel:v0.11.0-amd64
4kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装dashboard
1wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
2kubectl apply -f kubernetes-dashboard.yaml
修改dashboard类型
1kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
2type: NodePort
3kubectl get svc kubernetes-dashboard -n kubernetes-dashboard
创建管理员
1#Create a new ServiceAccount
2kubectl create serviceaccount k8sadmin -n kube-system
3
4#Create a ClusterRoleBinding with Cluster Admin Privileges
5kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin
6
7#Get the token
8kubectl get secret -n kube-system | grep k8sadmin | cut -d " " -f1 | xargs -n 1 | xargs kubectl get secret -o 'jsonpath={.data.token}' -n kube-system | base64 --decode
登录
1kubectl get secret --all-namespaces
2kubectl describe secret admin-token-xxx -n kube-system
使用firefox打开 https://<master-ip>:<svc-port>
增加nodes
- 创建token(master)
1kubeadm token create
- 获取token(master)
1kubeadm token list
- 获取hash(master)
1openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
2 openssl dgst -sha256 -hex | sed 's/^.* //'
- 修改hostname(node)
1vim /etc/hostname
2reboot
- 添加(node)
1kubeadm join --token=9o4dwm.u0pdm2tdf95gidqq 192.168.1.109:6443 --discovery-token-ca-cert-hash sha256:8be084a0278361aa8ec776f366f51b64195e444ae70388af5d8460bbf6844fff
其他命令
重制(可能失效): kubeadm reset
国内镜像表
全局 | 国内 | 格式 | 例子 |
---|---|---|---|
gcr.io | gcr.azk8s.cn | gcr.azk8s.cn//: | gcr.azk8s.cn/google_containers/hyperkube-amd64:v1.13.5 |
quay.io | quay.azk8s.cn | quay.azk8s.cn//: | quay.azk8s.cn/deis/go-dev:v1.10.0 |