Kubernetes安装(kubeadm方法安装)

本篇,由于本公司装机所需的服务的集成ansible已经做的比较好了,所以显得相对安装极为简单,环境要求没有的,就需要大家自行搜索完成环境要求了。

安装环境准备及安装
安装k8s设备环境要求主要有下面10点:

  1. CentOS版本为7以上
  2. 2核CPU和2G内存以上
  3. 多台机器内网互通
  4. 每台机器的主机名、mac地址和product_uuid唯一
  5. 测试环境关闭防火墙,保证全部端口开放。
  6. 禁用SELinux
  7. 禁用交换分区
  8. docker服务
  9. root账号权限
  10. 配置国内的repo源
节点 ip
k8s-master 192.168.92.150
k8s-node1 192.168.92.151

1. 系统初始化-服务安装(所有集群主机)

ansible roles 直接跑# ansible-play kubernetes.yml
(包含3个roles,base、docker、kubernetes)
将会完成base系统初始优化,完成上述一系列的要求;
Docker 安装
kubelet、kubectl、kubeadm 的安装

请自行达到环境要求。

2.在master节点执行初始化

kubeadm init \
--apiserver-advertise-address 192.168.92.150 \  #master的ip地址(更改为自己对应的ip)
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.14.1 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

执行完后将会得到提示几行代码。
一部分是执行后,可以使用kubectl的命令 ;
一个便为其他主机加入Kubernetes集群的命令。

3.Node节点执行刚得到的命令可以加入k8s集群中

kubeadm join 192.168.92.150:6443 --token 2gaut1.gqk0kwfcopk63u1w \
 --discovery-token-ca-cert-hash sha256:5e58307a6c891b170a79ea2243fbe912ae4f78871e1300d62110ce5f48425459

4.查看当前节点

[root@k8s-master ~]# kubectl get nodes
NAME            STATUS     ROLES    AGE   VERSION
k8s-master   NotReady   <none>   98s   v1.14.1
k8s-node1   NotReady   master   41m   v1.14.1  #状态为NotReady

当前查看集群状态,会发现节点状态均为notready,接下来我们就需要解决这个问题,安装flannel网络

5.安装flannel网络

#下载flannel的yml文件
Curl -O https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
#然后创建flannel:
kubectl create -f kube-flannel.yml
#完成后可以检查:(等待一段时间)
[root@k8s-master ~]$ kubectl get nodes
NAME            STATUS     ROLES    AGE   VERSION
k8s-master   Ready   <none>   98s   v1.14.0
k8s-node1   Ready   master   41m   v1.14.0  #状态变为Ready

至此,最简单的kuernetes便已经搭建好了,至于后续还需要做的什么高可用多master节点,其实用的也就是加入集群哪个命令,只是多加了一个参数。
\n
感觉这编辑器回车换行没用,手动换行符了 =,=
\n
\n

Kubernetes 多master节点加入

#使用命令
kubectl -n kube-system edit cm kubeadm-config
修改其中
controlPlaneEndpoint值为192.168.92.150:6443(当前master ip),然后确认信息修改完成

复制master节点上的相关证书到需要添加为master的k8s-master2节点上,证书清单如下:
/etc/kubernetes/pki/sa.key
/etc/kubernetes/pki/sa.pub
/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/ca.key
/etc/kubernetes/pki/front-proxy-ca.crt
/etc/kubernetes/pki/front-proxy-ca.key
/etc/kubernetes/pki/etcd/ca.crt
/etc/kubernetes/pki/etcd/ca.key
/etc/kubernetes/admin.conf

#查看当前token
kubeadm token list

#如果没有创建token
kubeadm token generate
生成:1l9w9s.hig0hylqzxjlzlda

#根据生成得到的创建加入集群命令
kubeadm token create 1l9w9s.hig0hylqzxjlzlda --print-join-command --ttl=24h
得到:
kubeadm join 192.168.92.150:6443 --token 1l9w9s.hig0hylqzxjlzlda     --discovery-token-ca-cert-hash sha256:3136ec6e6534fc7129f3797690dee72ac6e576ffa4446e468c9e712f4fae6000 

注意: 比添加work节点多了 --experimental-control-plane 参数
--experimental-control-plane  :如果是作为master节点加入集群则需要在命令后加入此选项

常用操作,简单的命令行操作

Kubectl get namespace   #创建如果不指定默认会放到default里
Kubectl get nodes
Kubectl get pods -o wide  #-o wide 显示详细
Pod常见状态:
ContainerCreating #容器创建
ImagePullBackoff #从后端把镜像拉取到本地
Terminating #终止
Running
Kubectl get deployment
 
创建一个容器:
语法:
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas]
--image :指定docker运行的容器镜像
--env : docker环境变量
--port : 映射端口
--replicas  :  副本数
kubectl run nginx --image=docker.io/nginx --replicas=1 --port=900
 
#命令行将端口映射出去
kubectl expose deployment/nginx   --type="NodePort"  --port 80
 
#更改副本数量
kubectl scale deployments/nginx --replicas=3
 
升级到指定镜像:(滚动升级)
$ kubectl set image  deployment/nginx-deployment  nginx=nginx:1.91
kubectl set image deployment/review-demo review-demo=library/review-demo:0.0.1 --namespace=scm(namespace可以不要)
 
回滚:
kubectl rollout undo deployment/topka-cn 
回滚到指定版本
kubectl rollout undo deployment/review-demo --to-revision=2 --namespace=scm(namespace可以不要)
 
#总结创建过程
1、用户通过 kubectl 创建 Deployment。
2、Deployment 创建 ReplicaSet。
3、ReplicaSet 创建 Pod。

如果是大规模使用,还是需要使用yml文件使用,毕竟那样定义可以更为方便直观,使得后续更为高效使用。在这里我就不过多介绍了,deployment与service yml文件相关,可以继续看下我的另外博客,又通过调用kubernetes Api完成对yml文件提取,更新。

你可能感兴趣的:(Kubernetes)