Kubernetes8--Centos基础镜像使用

目前已经搭建好k8s集群,一个Master节点,4个Node节点。内存资源总共约600G,需要进行虚拟化,资源的隔离与限制方便使用。

使用Centos基础镜像虚拟出若干linux镜像,方便服务部署等使用。

Centos基础镜像位置:

https://hub.docker.com/_/centos/

拉取镜像:

docker pull centos

基础镜像的使用:

基础镜像安装ssh服务:

启动sshd服务:

生成ssh验证文件:

[root@46506dfd57bb /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
Generating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
SHA256:C+AfCEsdndDOzDBYCLZsgKfIp+zQ6Rppude+pCC14mc root@46506dfd57bb
The key's randomart image is:
+---[RSA 2048]----+
|+o +++ .         |
|= =.o.+          |
|o*o oB           |
|+o = o=          |
|..=.o o S        |
|.=+. . o .       |
|B=. ... .        |
|+++Eo.           |
|.++..o.          |
+----[SHA256]-----+
[root@46506dfd57bb /]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
Generating public/private ecdsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_ecdsa_key.
Your public key has been saved in /etc/ssh/ssh_host_ecdsa_key.pub.
The key fingerprint is:
SHA256:qu+Qlnr6gSAyr/9A+NBAd53ZvHXoGjIq76ot8I51rKg root@46506dfd57bb
The key's randomart image is:
+---[ECDSA 256]---+
| . . .. =   .    |
|. . .  + o o .   |
|.         + .    |
| +     o o .     |
|B o   . S o      |
|+B + + . .       |
|..* @ .          |
| *o*.=           |
|E+OB*+o          |
+----[SHA256]-----+
[root@46506dfd57bb /]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
Generating public/private ed25519 key pair.
Your identification has been saved in /etc/ssh/ssh_host_ed25519_key.
Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub.
The key fingerprint is:
SHA256:gwRq6UtfORwQ1Rb2YtBYngD/v7AhmYoZNtuN6ZdGoLQ root@46506dfd57bb
The key's randomart image is:
+--[ED25519 256]--+
|    =++=+.       |
|   o +.=+o       |
|  +   +.= .      |
| o. .o * .       |
| .oo .* S        |
| .Eo ..+ o       |
|  = ..+.o .      |
| . B =+. + .     |
|  +.*o. . .      |
+----[SHA256]-----+

修改/etc/ssh/sshd_config  中:

将配置文件中原本UsePAM yes换成UsePAM no

允许远程root登录

[root@46506dfd57bb ssh]# vi sshd_config 
[root@46506dfd57bb ssh]# passwd root
Changing password for user root.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

退出容器,将容器提交为新基础镜像:

[root@xjs-dn04 ~]# docker commit 465 docker.io/chenwenkai123456/centos_ssh
sha256:119bc03d6dc591a65455bbfe62d5a05452f76ba8486ca7be130c24cb67f44f2d
[root@xjs-dn04 ~]# docker images
REPOSITORY                                                           TAG                 IMAGE ID            CREATED             SIZE
docker.io/chenwenkai123456/centos_ssh                                latest              119bc03d6dc5        3 seconds ago       305 MB

在docker hub中申请一个账号,用来存储镜像,也可以搭建自己的私有仓库。https://hub.docker.com/

[root@xjs-dn04 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: chenwenkai123456
Password: 
Login Succeeded

镜像上传到docker hub中:

[root@xjs-dn04 ~]# docker push docker.io/chenwenkai123456/centos_ssh:latest
The push refers to a repository [docker.io/chenwenkai123456/centos_ssh]
ae1efa863646: Pushed 
f972d139738d: Pushed 
latest: digest: sha256:2716209fc110e41460a0377673c0c495041294ccc386b8cd7baf00a077feb0d6 size: 741

此时可以使用docker  pull命令来拉取刚才的镜像。

启动新容器:

[root@xjs-dn04 ~]# docker run -d -p 2222:22 docker.io/chenwenkai123456/centos_ssh:latest /usr/sbin/sshd -D
4aa4b16063de1074a4d9c875a9b35511d91de3cefec173251fa6b4b694a4520f
[root@xjs-dn04 ~]# docker ps
CONTAINER ID        IMAGE                                                                                                                                        COMMAND                  CREATED             STATUS              PORTS                  NAMES
4aa4b16063de        docker.io/chenwenkai123456/centos_ssh:latest                                                                                                 "/usr/sbin/sshd -D"      3 seconds ago       Up 3 seconds        0.0.0.0:2222->22/tcp   peaceful_banach

登录测试ssh:

[root@xjs-dn04 ~]# ssh root@127.0.0.1 -p 2222
root@127.0.0.1's password: 
[root@4aa4b16063de ~]# uname -r
3.10.0-327.el7.x86_64
[root@4aa4b16063de ~]# hostname
4aa4b16063de

服务器的内网ip为192.168.1.16  外网ip为10.3.10.149   通过防火墙NAT映射实现端口流量转发

10.3.10.149:2222-------192.168.1.16:2222

在16服务器使用ssh,结果出现内网可以ssh登录,外网不可以ssh登录,这里外网实际上也是公司的内网。

ssh root@10.3.10.149 -p 2222

ssh root@192.168.1.16 -p 2222

服务器的网络

内网到外网:  192.168.1.16---192.168.1.1--10.3.10.138(防火墙IP)---10.3.10.98(专线网关)---专线上网

外网到内网:   外网IP---公司网关---10.3.10.254----10.3.10.138(NAT映射)---192.168.1.16

在16服务器内部无法使用外网ip登录ssh,结果在自己电脑上可以登陆:

电脑IP   10.3.27.50 ---10.3.27.254----10.3.10. 254---10.3.10.138---192.168.1.16

现在由内向外以及由外向内使用两条不同线路,因此网络可能有点错乱。

docker run --name centos-ssh -d -p 2222:22 docker.io/chenwenkai123456/centos_ssh:latest /usr/sbin/sshd -D

docker run --name centos-ssh -d -p 2222:22 docker.io/chenwenkai123456/centos-ssh:v1 /usr/sbin/sshd -D

现在根据以上镜像来使用k8s部署启动:

定义Pod以及Service对象:

[root@Ac-private-1 centos]# cat centos-rc.yaml 
---
kind: ReplicationController
apiVersion: v1
metadata:
  name: centos-ssh
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: centos-ssh
    spec:
      containers:
      - name: centos-ssh
        image: docker.io/chenwenkai123456/centos-ssh:v1
        ports:
        - containerPort: 22
          protocol: TCP
        command: ["/usr/sbin/sshd","-D"]
[root@Ac-private-1 centos]# cat centos-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: centos-svc
spec:
  ports:
  - name: centos-svc
    port: 22
    targetPort: 22
    nodePort: 30005
  selector:
    app: centos-ssh
  type: NodePort 

结果发现ssh登录失败,好奇怪。

使用直接docker  run centos镜像可以ssh成功,使用k8s  yaml方式部署失败,可能是yaml配置有问题。

总感觉是公司网络ip产生冲突,内部IP使用dhcp来分配,但是服务器IP是static的,这样可能会冲突,当从外网访问内网时,可能会冲突。

更换镜像: 直接支持ssh登录

docker pull kinogmt/centos-ssh

启动容器:

docker run --name ct -p 22222:22 -d docker.io/kinogmt/centos-ssh

内网可以登陆,外网不可以:

[root@xjs-dn04 k8s]# ssh root@192.168.1.16 -p 22222
root@192.168.1.16's password: 
[root@9f77646b277e ~]# exit
logout
Connection to 192.168.1.16 closed.
[root@xjs-dn04 k8s]# ssh root@10.3.10.149 -p 22222
ssh: connect to host 10.3.10.149 port 22222: Connection refused

感觉是IP冲突

使用k8s更换镜像来部署,发现内外网均不可以,k8s部署方式配置不正确。

仍要解决的问题:

ssh登录

内存,cpu,硬盘等资源的隔离与配额限制

nodeSelector将pod调度到指定node

使用deplyment来优化k8s部署方式

参考链接:

https://blog.csdn.net/u012767761/article/details/78107870

https://www.jianshu.com/p/e38c05cf076a?spm=a2c4e.11153940.blogcont508898.10.43bd25101X52jj

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值