参考下面博客完成大部分组件安装
Centos7快速搭建Kubernetes 1.11.1单机集群
可以完成到dashboard
前的搭建
问题
安装指定版本的docker
yum install docker-ce-17.09.0.ce -y
coredns
服务不停的restart
,解决办法:
kubernetes(k8s)DNS 服务反复重启解决:
k8s.io/dns/pkg/dns/dns.go:150: Failed to list *v1.Service: Get https://10.96.0.1:443/api/v1/services?resourceVersion=0: dial tcp 10.96.0.1:443: getsockopt: no route to host
在使用 Minikube 部署 kubernetes 服务时,出现 Kube DNS 服务反复重启现象(错误如上),这很可能是 iptables 规则乱了,我通过执行以下命令解决了,在此记录:
systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker
参考:https://blog.csdn.net/shida_csdn/article/details/80028905
Worker节点安装
安装Worker节点步骤如下:就是Centos7快速搭建Kubernetes 1.11.1单机集群博客中的前面步骤。
- 用swap分区
sudo swapoff -a |
永久禁用
sudo vi /etc/fstab |
把/dev/mapper/centos-swap swap这行注释掉
编写配置
vim /etc/sysctl.d/k8s.conf |
- 配置kubernetes yum源
vim /etc/yum.repos.d/kubernetes.repo |
安装
安装kubeadm, kubelet and kubectl
yum install docker-ce kubelet-1.11.1 kubeadm-1.11.1 kubectl-1.11.1 kubernetes-cni |
- 由于国内网络原因,kubernetes的镜像托管在google云上,无法直接下载,所以直接把把镜像搞下来有个技术大牛把gcr.io的镜像
每天同步到https://github.com/anjia0532/gcr.io_mirror这个站点,因此,如果需要用到gcr.io的镜像,可以执行如下的脚本进行镜像拉取
vim pullimages.sh |
- kubernetes集群不允许开启swap,所以我们需要忽略这个错误
vim /etc/sysconfig/kubelet |
执行在安装master时最后生成的一段代码,代码格式如下:
kubeadm join 192.168.0.184:6443 --token zr21ox.if71afbyjpk0khq7 --discovery-token-ca-cert-hash sha256:296c9615eebd158adcfebd6710610b352da55152566ce87bf56559b0ddd596b1
获得dashboard
文件并安装
下载
dashboard.yaml
文件wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recommended/kubernetes-dashboard.yaml
修改文件
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
# 添加Service的type为NodePort
type: NodePort
ports:
- port: 443
targetPort: 8443
# 添加映射到虚拟机的端口,k8s只支持30000以上的端口
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard安装
kubectl apply -f kubernetes-dashboard.yaml
获取token
这里有一个简单的命令:
kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
也可以自己手动查询:
# 输入下面命令查询kube-system命名空间下的所有secret
kubectl get secret -n kube-system
# 然后获取token。只要是type为service-account-token的secret的token都可以使用。
# 比如我们获取replicaset-controller-token-wsv4v的touken
kubectl -n kube-system describe replicaset-controller-token-wsv4v访问dashboard
通过node节点的ip,加刚刚我们设置的nodePort就可以访问了。
https://<node-ip>:<node-port>
注意是https不是http哦
认证有两种方式:
通过我们刚刚获取的token直接认证
通过Kubeconfig文件认证
只需要在kubeadm生成的admin.conf文件末尾加上刚刚获取的token就好了。- name: kubernetes-admin
user:
client-certificate-data: xxxxxxxx
client-key-data: xxxxxx
token: "在这里加上token"
创建新的kubeadm join
令牌
kubeadm token create --print-join-command
kubectl
命令
kubectl get pods -n kube-system
kubectl describe pod podName --namespace=kube-system
其中的podName是你的pod名称kubectl describe node master
master是节点名称 可以通过kubectl get nodes
得到。[root@nsop-k8s1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
nsop-k8s1 Ready master 2h v1.11.1
nsop-k8s2 Ready <none> 2h v1.11.1
[root@nsop-k8s1 ~]#