近期通过网课学习了李振良老师kubernetes教程。根据老师的课堂内容笔记做了相关的整理,以便于加深理解和后期自查
准备工作
-
部署路径
- k8s路径: /opt/kubernetes/{node,server}
- 证书: /opt/ssl
- cni插件: /opt/cni
-
下载整理的物料: git clone git@github.com:coolboyweizi/kubernetes-binary.git
- 主要目录文件夹说明
- bin: server或node二进制包
- config: 相关服务的配置文件
- service: 相关服务启动脚本
- logs: 日志文件
- 主要目录文件夹说明
-
官网下载kubernetes的server、node二进制包
服务器节点
- 服务器采用三台部署
主机名 | IP | 说明 |
---|---|---|
m1 | 192.168.199.11 | etcd,k8s-master |
n1 | 192.168.199.12 | etcd,k8s-node |
n2 | 192.168.199.13 | etcd,k8s-node |
证书与etcd服务
生成kube-apiserver、kube-proxy、etcd证书
- 修改script/ssl.sh中etcd、kube-api认证的服务器IP。
- 执行shell脚本,证书自动生成到/opt/ssl下,赋权限644
- 分发证书文件到相关的服务器
启动etcd服务
- 推送script/etcd-install.sh到etcd服务器。并执行
server 端部署
启动前准备
- 修改配置文件: /opt/kubernetes/server/config/kube-apiserver.conf
- $MASTER: master的IP
- $ETCD[1-3]: 3台etcd的IP
- 创建日志目录: mkdir -p /opt/kubernetes/server/logs
启动并检测服务
for i in `ls /opt/kubernetes/server/service`;do systemctl restart $i;done
for i in `ls /opt/kubernetes/server/service`;do systemctl status $i;done
for i in `ls /opt/kubernetes/server/service`;do systemctl enable $i;done
账户授权
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
node 端部署
启动前准备
- 修改配置文件: /opt/kubernetes/node/config
- kubelet.conf: $NODE 节点名称
- kube-proxy.yml: $NODE 节点名称
- 安装并启动docker
- 创建日志目录: mkdir -p /opt/kubernetes/node/logs
启动并检测服务
for i in `ls /opt/kubernetes/node/service`;do systemctl restart $i;done
for i in `ls /opt/kubernetes/node/service`;do systemctl status $i;done
for i in `ls /opt/kubernetes/node/service`;do systemctl enable $i;done
k8s-server认证
# 检查未认证节点
kubectl get csr
for i in `kubectl get csr | grep -v 'NAME' |awk '{print $1}'`;do kubectl certificate approve $i;done
安装flannel 与 coreDNS
flannel
- shell: kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
coredns
- 下载https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/dns/coredns/coredns.yaml.sed
- 替换文件中相关变量。确定文配置指向
- $DNS_SERVER_IP: 10.0.0.2
- node/kubelet-config.yml: clusterDNS
- $DNS_DOMAIN: cluster.local
- node/kubelet-config.yml: clusterDomain
- image: coredns/coredns:x.x
- 修改coredns镜像地址
- $DNS_SERVER_IP: 10.0.0.2
- shell: kubectl create -f coredns.yaml
- pod运行失败:
- 相关服务器更改规则: iptables -P FORWARD ACCEPT
部署检测
kubectl run busybox --rm=true --image=busybox --restart=Never -it
nslookup kubernetes # 返回10.0.0.1